惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 鱼十七

[Programming Entity Framework] 第3章 查询实体数据模型(EDM)(二) [Programming Entity Framework] 第3章 查询实体数据模型(EDM)(一) [Programming Entity Framework] 第2章 探究实体数据模型(EDM)(二) [Programming Entity Framework] 第2章 探究实体数据模型(EDM)(一) [Programming Entity Framework] 第1章 ADO.NET实体框架介绍(二) [Programming Entity Framework] 第1章 ADO.NET实体框架介绍(一) Programming Entity Framework 第二版 翻译索引 设计模式学习笔记 1.介绍 WP7 学习手记1.你好 WP7 excel2007内容转成xml ASP.NET 生成静态页面的思路介绍 scrum介绍 SQL SERVER 2005服务无法启动问题的解决办法 - 鱼十七 C#操作Excel知识点 [翻译]MS project 与 MS Team Foundation Server(TFS)的域映射 - 鱼十七 [翻译]通过调用多个动作创建ASP.NET MVC视图 [翻译]在ASP.NET MVC中绑定数据(包括分页和排序) MOSS文章过滤QueryString Filter Web Parts使用及Web Parts部署 ASP.NET方式在工作组内修改帐户密码 - 鱼十七
[Programming Entity Framework] 第2章 探究实体数据模型(EDM)(三)
鱼十七 · 2012-10-17 · via 博客园 - 鱼十七

Programming Entity Framework 第二版翻译索引

SSDL:存储模式

继续我们那简单的模型,现在该来看一下另一块,在讨论MSL之前需要理解的SSDL。

EDMX文件中StorageModels模块是它所关联的数据存储的图示。这个文件的元素与CSDL文件非常相似。图2-17展示了来自于EDMX文件中完整的SSDL,尽管不是每个片段都是展开的。

注:EDM设计工具包括了一些允许你从数据库更新模型的特性。在EDM设计器中,它可以通过右键的上下文菜单中获得。在第7章中你将与这些特性工作,把数据库的存储过程引入到模型中。

为了一致性,表和列被称为EntityType和属性。你将经常看到在文档中它被以表和列的名称提及,甚至在可视化工具中。

注意SSDL在下列方面与CSDL有所不同:

  • 模式元素:

    • 命令空间后面加上了".Store",清楚地表明这个模式是用于数据存储,而不是模型的概念层。

    • 它有一个叫做ProviderManifestToken的属性。救命中的值表示SQL Server版本的简单表达,例如,2008,它是该模型使用的数据库。SQL Server2008真实的版本号是10.0.1600.22。EF依赖这个信息,所以它是必需的。这些值由你使用的提供程序(在这个示例中,SqlClient)和它为令牌对外暴露的值决定。

    • Xmlns命令空间表明此XML文件该模块使用的命名空间。再次强调,这个特定的参数是静态的。

  • 实体容器

    • 实体容器的名称是"SampleModelStoreContainer",它来自于数据库名称。

  • 实体类型

    • 实体类型名称是数据库中表的真实名称。

    • 属性类型是数据存储数据类型,在本例中,是SQL Server数据类型。

    • 标识列是StoreGeneratedPattern="Identity"属性,意思是值在行数据插入时会被创建(例如,由数据库创建)且不能改变。另一个选项是"Computed",它表示值在插入和更新时被生成,选项"None"是默认值。

在第16章中,你将有机会直接与SSDL元数据打交道。你可以在附录C中找到更多关于SSDL元数据的额外详细说明。

注:注意在ProviderManifestToken中指定的数据库版本。如果你正打算从SQL Server的一个版本移到到另一个(例如,你的开发机器使用SQL Server2008,但是客户使用的是SQL Server2005),你将需要手工在XML文件中修改此值。

MSL:映射

EDMX文件最后一个模块是Mappings模块。在EF元数据中,映射层在概念层和存储层中间,它不仅提供了从实体属性映射回数据存储的数据库的表和列中,还使得我们可以对模型进行更深入的自定义。

你可以在设计器的映射详细窗口中查看映射。跟着来操作,关闭模型的XML视图,在解决方案浏览器中通过双击模型的EDMX文件在设计器中打开模型。

为了看到映射详细窗口,在Contact实体上右键,从菜单中选择表映射。Contact的映射信息将在映射详细窗口中显示,参见图2-18。

图2-18直观地展示了Contact实体如何映射到存储层中的Contact表。这是由"映射到Contact"定义的,它指定了SSDL中表的名称。换句话说,Contact实体映射到Contact表。因为Contact实体没有被自定义过,映射很简单,在概念层和存储层之间是一对一的映射。

在Contact表的表选项下面,你可以看到来自表的列(左边)都被映射到实体的属性(右边)上了。当你他自己创建这些映射,而不是依靠向导时,默认情况下,设计器将名称一一匹配,这非常有帮助。

你看到列包含提供程序的类型(来自SQL Server的int, nchar和datatime),而属性包含EF的基本类型(Int32, String和DataTime)。

你可以使用"添加一个条件"和"添加一个表或视图"占位符来更深入的自定义模型。我们将在第14章覆盖这个主题。

附录C浏览了表示这个模型映射的XML。

第19章会介绍更多关于关联和映射的内容。

EDM中的数据库视图

EDM中我们还未提到的是来自救命数据库的数据库视图。向导将视图导入模型,生成了vOfficeAddress实体。EF处理数据库视图的方式与处理表的方式一样。

如果你浏览了模型,你会发现SSDL中有一个称为DefiningQuery的东西,它包括来自数据库定义视图的T-SQL。

注:当你最开始使用EDM向导创建模型时,你可能在错误列表窗口中看到关于这个视图的一些警告信息。向导将发现视图没有主键,并会在这个实体中推断一个非null的属性值作为实体主键。这些警告信息告诉你这些,同样在EDMX会嵌入相同的消息。

注:向导不能合建没有EntityKey的实体。因此,如果在视图中没有非null的值,或者在表中,因为这个缘故,它将完全跳过对该对象的实体创建

第16章将深入讨论DefiningQuery。而现在,记住视图作为实体进入模型,如果视图是不可更新的,你可以尝试着使用存储过程更新它,这个特性被称为function mapping。你将在第7章学习更多关于函数映射的内容。

注:记住对数据库表、视图或者其它对象的任何改变不会自动更新到模型。你将在第7章中学习到关于更新模型的内容。

总结

本章向你介绍了实体数据模型和设计工具的一些功能。你创建了你的第一个EDM,并从内部得了对它常见组件的理解。你在设计器和原生XML文件中浏览了映射。

正如之前解释过的,EDM在你开始利用它的自定义功能时闪闪发光。现在你对于EDM已经有了良好的理解,你已经准备好学习更加高级的映射和自定义了。这些 我们将在第14章到16章中讲到。但是现在,这个模型足够用于查询,这个就是接下来的一章中要开始学习的。