如何防止错误" Id:名称:类型中的每个属性名称必须是唯一的。物业名称' Id'已定义。"

时间:2015-08-26 19:54:55

标签: c# asp.net asp.net-mvc asp.net-identity

为了实现自定义身份验证模块,我使用了asp.net Identity。我需要我的User类继承asp.net Identity的User类。我有两个具有相同名称但不同值类型的字段,当然我收到错误。请告诉我我需要做些什么来防止这个错误。非常感谢。

// asp.net Identity User class
public class User : Entities.User, IUser
{
    public new string Id
    {
        get { return base.Id.ToString(); }
    }
}

// My User class   
public class Entities.User : BaseDomainObject
{
    public string Email { get; set; }
    public string PasswordHash { get; set; }
    public string SecurityStamp { get; set; }
    public string UserName { get; set; }
    public List<Login> Logins { get; set; }
}

public abstract class BaseDomainObject
{
    public BaseDomainObject()
    {
        CreatedOn = DateTime.Now;
        ModifiedDate = DateTime.Now;
    }

    public int Id { get; set; }
    public DateTime CreatedOn { get; set; }
    public DateTime ModifiedDate { get; set; }
    public DateTime? DeleteDate { get; set; }
}

2 个答案:

答案 0 :(得分:0)

即使它们具有不同的类型,也无法使2个属性具有相同的名称。

如果你需要这件事肯定是一个设计问题,你可能需要再考虑一下你需要涵盖哪些业务场景并寻找不同的设计/解决方案。

答案 1 :(得分:0)

更改您的设计,以便User不会从Entities.User继承。

如果需要对Entities.User对象的引用,可以将其存储为User上的属性:

public class User : IUser
{
    private Entities.User _eUser;
    public Entities.User EUser
    {
        get { return _eUser; }
        set { _eUser = value; }
    }

    public string Id
    {
        get
        {
            return _eUser.Id.ToString();
        }
    }
}

https://en.wikipedia.org/wiki/Composition_over_inheritance