gpt4 book ai didi

entity-framework - 'Company.Model.User'类型和 'Company.Core.Model.User'类型都具有相同的简单名称 'User',因此不能在同一模型中使用

转载 作者:行者123 更新时间:2023-12-03 08:39:35 27 4
gpt4 key购买 nike

我有一个基础实体类MyCompany.Core.Model.User,该类将用于User实体的常用属性:

public class User
{
public string Username { get; set; }
public string Usercode { get; set; }
}

我还有一个基本映射类 MyCompany.Core.Model.UserMap,用于为基本 User类设置代码优先映射:
public class UserMap<TUser> : EntityMapBase<TUser>
where TUser : User
{
public UserMap()
{
// Primary Key
this.HasKey(t => t.Usercode);

// Table & Column Mappings
this.ToTable("Users");
this.Property(t => t.Username).HasColumnName("Username");
this.Property(t => t.Usercode).HasColumnName("UserCode");
}
}

在一个单独的程序集中,我有一个派生类 MyCompany.Model.User,它从 User基类继承,并通过一些附加属性进行扩展:
public class User : Core.User
{
public string Surname { get; set; }
}

另外,我有一个派生的映射类 MyCompany.Model.UserMap,为附加属性提供附加配置:
public class UserMap : Core.UserMap<User>
{
public UserMap()
{
this.Property(t => t.Surname).HasColumnName("Surname");
}
}

但是,当将 MyCompany.Model.User添加到上下文并注册 MyCompany.Model.UserMap时,出现以下错误:

类型“MyCompany.Model.User”和类型“MyCompany.Core.Model.User”都具有相同的简单名称“User”,因此不能在同一模型中使用。给定模型中的所有类型都必须具有唯一的简单名称。使用“NotMappedAttribute”或在Code First fluent API中调用“忽略”以从模型中明确排除属性或类型。

link表示您不能在模型中两次使用相同的“简单名称”。

为什么在模型中注册了基类“简单名称”,并且围绕它可以实现这种实体继承吗?

我怀疑简单的解决方案是重命名派生类。但是我宁愿避免这种情况,因为在多种情况下可能会有许多派生。

注意:使用Entity Framework 6.0.0-rc1(预发行版)

最佳答案

这是我在2012年https://entityframework.codeplex.com/workitem/483中报告的EF的局限性,但仍未在6.0.2中实现。 EF使用扁平的内部体系结构,不识别 namespace 。可能会出现在EF7中,但不会出现。目前,唯一的解决方案是将这两个类重命名为唯一的类名称,而不管它们所在的 namespace 如何。恕我直言,这是EF中的一个重要限制。只需考虑一个名为Category的类,并考虑在一个域中可以使用多少个不同的命名空间。

关于entity-framework - 'Company.Model.User'类型和 'Company.Core.Model.User'类型都具有相同的简单名称 'User',因此不能在同一模型中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638741/

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