C# 如何使用同名EF 6的类

C# 如何使用同名EF 6的类,c#,entity-framework-6,C#,Entity Framework 6,我在同一个项目中有多个EDMX文件。指向同一数据库的所有文件 表“Customers”出现两次,但在不同的EDMX文件中 有没有办法在不同的EDMX文件中使用同名的类 我的代码: using (var con = new TestEntities()) { var q1 = con.ADDRESS.ToList(); foreach (var item in q1) { Con

我在同一个项目中有多个EDMX文件。指向同一数据库的所有文件

表“Customers”出现两次,但在不同的EDMX文件中

有没有办法在不同的EDMX文件中使用同名的类

我的代码:

using (var con = new TestEntities())
        {
            var q1 = con.ADDRESS.ToList();
            foreach (var item in q1)
            {
                Console.WriteLine(item.CITY);
            }
        }

        using (var con2 = new TestEntities1())
        {
            var q2 = con2.ADDRESS.ToList();
            foreach (var item in q2)
            {
                Console.WriteLine(item.CITY);
            }
        }
在第二个查询q2上,我得到一个错误:CLR类型到EDM类型的映射不明确,因为有多个CLR类型与EDM类型匹配

第一个正常工作


谢谢

您需要为每个模型指定名称空间。在解决方案资源管理器中选择模型,单击鼠标右键并选择“属性”。在“属性”窗口中,更改每个模型的自定义工具命名空间。例如,如果您有TestEntities.edmx并为其提供一个自定义工具名称空间TestEntities,那么您的实体将可以在TestEntities.ADDRESS下访问


对项目中的所有模型重复此操作,以便将TestEntitys1.edmx文件分配给TestEntitys1,并且可以使用TestEntitys1.ADDRESS访问ADDRESS对象。

能否在.edmx属性上设置命名空间,以便该.edmx文件的代码都在该命名空间内?没有使用EF,但可以在LINQ.dbml中使用,所以我假设第一个模型的名称空间是:HAS\u Communicator\u TESTModel,第二个模型的名称空间是:HAS\u Communicator\u TESTModel 1。我使用了不同的名称空间。好的,那么可能您有一个问题:,建议您需要使用不同的类名,因为EF机器在内部某处只使用类名而不是FQN。但是,不知道这是否仍然准确。很抱歉是的,我有这个问题。我回顾了这篇文章,但试图找到解决办法。现在我将忘记使用相同名称的类的选项。我已经有了不同名称空间的模型,但它不起作用。