Entity Framework學習筆記——edmx文件

上文簡單介紹了一下Entity FrameWork,這裏說一下EF的核心——edmx文件。html

           在VisualStudio中創建edmx文件(此例環境爲VisualStudio2012)mysql

           一、新建—ADO.NET實體數據模型:sql

 二、選擇數據模型時,由於我以前已經在數據庫中創建好表了,因此咱們這裏先選擇從數據庫生成(即DB First),若是選擇空模型,就能夠在沒有創建數據庫的狀況下,經過先創建實體模型來生成實體類和數據庫表。數據庫

三、選擇數據庫鏈接服務器

四、選擇或設置好鏈接的服務器、驗證信息、數據庫名:app

五、注意由於鏈接字符串將會保存到配置文件中,因此在這裏要選擇【是,在鏈接字符串中包括敏感數據】:編輯器

六、選擇咱們想要生成實體的表:學習

七、一切都完成後,以下圖,edmx就已經根據咱們所選的數據庫表生成了相應的實體,同時,在解決方案資源管理器中的T4模板Model.tt下還爲自動咱們生成了Department和Employee實體類。this

到此,edmx文件就已經建立完成了。spa

 

        上文說到,edmx文件的本質就是一個XML文件,它用於定義概念模型、存儲模型和這些模型之間的映射。雖然edmx文件默認狀況下以實體設計器的方式打開,還能夠右擊Model.edmx文件以XML文本編輯器打開,這時就能夠看到edmx文件的廬山真面目:

從代碼中能夠看到,edmx大體由SSDL、CSDL、C-S三部分組成,分別對應着對於數據庫實體數據庫表與實體之間的映射這三方面的解析,SSDL中有對數據庫表、字段等的規定,CSDL中有對實體名、實體屬性等的規定,C-S中有對數據庫表與實體之間的映射。一句話總結edmx文件,就是用來解析存儲模型、概念模型以及這二者之間的映射,其實也仍是上文中那張圖片的詳細表現。

       上文第七步說到,生成edmx模板的同時,跟實體相對應的兩個類Employee和Department也生成了,在實體類的父節點,還有一個Model.tt,這就是T4模板,看了下面這一段T4模板中的代碼,就會理解,其實這兩個實體類是T4模板根據edmx配置文件生成的。(用VisualStudio查看T4模板時代碼會很混亂,所以能夠安裝一個T4 Editor的插件再進行T4模板代碼的學習,插件下載地址:點擊跳轉

 

 
 
<#@ include file="EF.Utility.CS.ttinclude"#><#@   
 output extension=".cs"#><#  
  
const string inputFile = @"Model.edmx";  
var textTransform = DynamicTextTransformation.Create(this);  
var code = new CodeGenerationTools(this);  
var ef = new MetadataTools(this);  
var typeMapper = new TypeMapper(code, ef, textTransform.Errors);  
var fileManager = EntityFrameworkTemplateFileManager.Create(this);  
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);  
var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);  
  
if (!typeMapper.VerifyCaseInsensitiveTypeUniqueness(typeMapper.GetAllGlobalItems(itemCollection), inputFile))  
{  
    return string.Empty;  
}  
  
WriteHeader(codeStringGenerator, fileManager);  
  
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))  
{  
    fileManager.StartNewFile(entity.Name + ".cs");  
    BeginNamespace(code);  
#>
相關文章
相關標籤/搜索