C# EF 4.1未调用模型创建
EF 4.1没有调用ModelCreating上的C# EF 4.1未调用模型创建,c#,entity-framework-4.1,dbcontext,C#,Entity Framework 4.1,Dbcontext,EF 4.1没有调用ModelCreating上的,,以便配置表等。我有一个现有的数据库。这是我的连接字符串: <add name="AcmeDBContext" connectionString="metadata=res://*/|res://*/|res://*/; provider=System.Data.SqlClient; provider connection string=
,
,以便配置表等。我有一个现有的数据库。这是我的连接字符串:
<add name="AcmeDBContext"
connectionString="metadata=res://*/|res://*/|res://*/;
provider=System.Data.SqlClient;
provider connection string="
data source=[server];
initial catalog=Acme;integrated security=True;
multipleactiveresultsets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
我在网上读了很多书,但我无法指出问题所在。从不调用模型创建上的
,因此异常表示实体/类(Vehicle、VehicleMake、VehicleModel)当我尝试查询任何内容时,当前上下文中不存在任何内容。您同时使用两种方法-您的连接字符串表示您希望在EDMX中首先使用模型或数据库,但您正在编写上下文以使用代码优先/fluent api映射数据库。一旦使用EDMXOnModelCreating
将永远不会被调用。如果要在模型创建时使用OnModelCreating
,请使用不带元数据资源的公共SQL连接字符串
<add name="AcmeDBContext"
connectionString="data source=[server];
initial catalog=Acme;integrated security=True;
multipleactiveresultsets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
您是如何在代码中创建上下文实例的?因此,如果我想先使用数据库(我想我没有选择),那么我应该在哪里将类名映射到表名?我必须使用与表名相同的类名吗??很抱歉,我以前使用过NH,但没有使用EF,而且我可以轻松地将类映射到具有FluentNHI删除的元数据信息的表,并且行为仍然没有改变!!OnModelCreating仍然没有被调用。如果要首先使用数据库,请创建一个EDMX文件。您可以选择从现有数据库创建此数据库。在第一次导入之后,您将拥有一个基本的实体模型,您可以根据需要完全修改该模型。实体框架然后执行从实体模型到数据库模式的映射。请参见第一次使用数据库时调用的建模创建。应用程序启动时不会自动调用它。如果您想使用fluent映射,那么使用OnModelCreating
是指定表和类之间映射的一种方法。@Shimmy-为了完整起见,尽管这是一条三年前的注释:“事实上,我不在乎您是先称它为模型还是先称它为代码”-在实体框架中,这是两个完全不同的概念。这接近于说“我不在乎你称它为NHibernate还是实体框架”。您需要决定要使用哪一个。
<add name="AcmeDBContext"
connectionString="data source=[server];
initial catalog=Acme;integrated security=True;
multipleactiveresultsets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />