我是EF的新手,我不知道我做错了什么。我使用EF 4.1"数据库优先"为现有数据库创建模型(我无法更改)。我在数据库中需要的所有表都在一个特定的模式,对于这个问题,我将称之为"my_schema"。在edmx设计器文件的主要属性中,我将数据库模式名称设置为"my_schema"。当我检查edmx文件的原始XML时,它似乎具有正确的模式映射
。
<EntitySet Name="Events" EntityType="MyModel.Store.Events" store:Type="Tables" Schema="my_schema" />
然而,当我访问DbContext类上的Events实体集时生成的SQL仍然是:
SELECT ....
FROM dbo.Events
我不确定它是否有任何区别,但我正在使用ADO.net DBContextGenerator来生成我的类。
有谁知道我做错了什么吗
好吧,我现在已经猜到了,这归结为我对EF如何工作的无知。我正在传递我的DbContext一个普通的ADO.net连接字符串,它似乎把它变成了代码第一模式。因此,我的edmx模型中的任何设置和配置都被忽略,它正在寻找模型类的属性。只要我将其更改为使用EF字符串,其中包括对模型元数据文件的引用,它就可以工作。现在看起来很明显,不知道我是如何期望它神奇地知道模型元数据的