gpt4 book ai didi

c# - 在不同的 Entity Framework 模型中不能有相同的表名吗?

转载 作者:可可西里 更新时间:2023-11-01 03:05:53 26 4
gpt4 key购买 nike

我的应用程序使用两个不同的 SQL 2008 数据库。数据库有几个同名的表,即。 用户。我想对这两个数据库都使用 EF4。但是,当我运行我的应用程序并创建第二个数据库的 objectcontext 时,出现以下错误:

Multiple types with the name 'User' exist in the EdmItemCollection in different namespaces. Convention based mapping requires unique names without regard to namespace in the EdmItemCollectionto namespace in the EdmItemCollection

这是否意味着我不能在同一个应用程序中使用具有(部分)相同表名的两个数据库?它们在不同的命名空间、不同的 edmx 模型、不同的项目等中。

附言其中一个模型由设计人员生成并使用 POCO 类,另一个模型是从数据库中推断出来的并与 EF 紧密耦合。

最佳答案

要使用“基于默认约定的映射”,以下 2 种方法将起作用:

1)冲突是由使用通配符的连接字符串引起的:

    metadata=res://*/Repositories.EntityFramework.Model.csdl|res://*/Repositories.EntityFramework.Model.ssdl|res://*/Repositories.EntityFramework.Model.msl;

由于 * 对您的项目不起作用,您可以定义多个连接字符串以对包含 edmx 的程序集进行硬编码。

2) 创建一个助手

    public static EntityConnection GetEfConnectionString(this string sqlConnectionString)
{
var cs = string.Format(@"metadata=res://{0}/Repositories.EntityFramework.Model.csdl|res://{0}/Repositories.EntityFramework.Model.ssdl|res://{0}/Repositories.EntityFramework.Model.msl;provider=System.Data.SqlClient;provider connection string=""" + sqlConnectionString + @"""",
Assembly.GetCallingAssembly().FullName
);

return new EntityConnection(cs);
}

2017 年更新:

    public static string GetEfConnectionString(this string sqlConnectionString, Type type)
{
string cs =
string.Format(
@"metadata=res://{0}/Models.Model.csdl|res://{0}/Models.Model.ssdl|res://{0}/Models.Model.msl;provider=System.Data.SqlClient;provider connection string=""" +
sqlConnectionString + @"""",
type.Assembly.FullName
);
return cs;
}


// usage: don't "new" EntityConnection. See 2012 comment.
string connString = ConfigurationManager.ConnectionStrings["sqlConnection"].ConnectionString.GetEfConnectionString();
using(var entities = new XyzEntities(connString))

关于c# - 在不同的 Entity Framework 模型中不能有相同的表名吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4069166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com