Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 外键关系EF代码优先_C#_Entity Framework - Fatal编程技术网

C# 外键关系EF代码优先

C# 外键关系EF代码优先,c#,entity-framework,C#,Entity Framework,我正忙于创建我的第一个EF代码优先模型,我遇到了一个稍微令人困惑的问题 我有许多模型类,每个模型类都继承自一个基本模型类,这个基本模型类有三个我希望在所有模型类中使用的公共属性。这些属性是Id、LastUpdated和LastUpdatedBy Id是每个模型类的主键。 LastUpdated是我的“用户”模型类的外键。 LastUpdatedBy是一个日期时间字段,用于指示上次修改记录的时间 因此,我想设置的是从基类到“用户”模型类的1对1外键关系,但我收到了一个异常: 多重性在角色“Prof

我正忙于创建我的第一个EF代码优先模型,我遇到了一个稍微令人困惑的问题

我有许多模型类,每个模型类都继承自一个基本模型类,这个基本模型类有三个我希望在所有模型类中使用的公共属性。这些属性是Id、LastUpdated和LastUpdatedBy

Id是每个模型类的主键。 LastUpdated是我的“用户”模型类的外键。 LastUpdatedBy是一个日期时间字段,用于指示上次修改记录的时间

因此,我想设置的是从基类到“用户”模型类的1对1外键关系,但我收到了一个异常:

多重性在角色“Profile\u LastUpdatedByUser\u Source”中无效 在关系“Profile\u LastUpdatedByUser”中。因为依赖者 角色属性不是键属性,它是 依赖角色的多重性必须为“*”

这是我的ModelBase类:

public class ModelBase
    {
        public int Id { get; set; }
        public DateTime LastUpdated { get; set; }

        [ForeignKey("LastUpdatedByUser")]
        [Required]
        public int LastUpdatedByUserId { get; set; }

        public virtual User LastUpdatedByUser { get; set; }
    }
这是我的一个模型类:

public class Profile : ModelBase
    {
        [StringLength(25, MinimumLength=1)]
        [Required(ErrorMessage="First Name is Required")]
        public string FirstName { get; set; }

        [StringLength(25, MinimumLength = 1)]
        [Required(ErrorMessage = "Last Name is Required")]
        public string LastName { get; set; }

        [StringLength(25, MinimumLength = 1)]
        [Required(ErrorMessage = "Email Address is Required")]
        public string Email { get; set; }

        public string Mobile { get; set; }
        public string HomePhone { get; set; }
        public string WorkPhone { get; set; }

        public string ImageSource { get; set; }

        public Squable.Model.Enums.MembershipType.MembershipTypeEnum MembershipType { get; set; }
    }
这是我的用户类(请忽略Password属性,我稍后会修复它;):

我不知道我所做的是否是最佳实践,但我可以提供一些建议,比如如何解决问题,或者只是一些指向正确方向的指针。

移动

public int Id { get; set; }
要创建用户类和配置文件,还可以将名称更改为UserId和ProfileId并移动

public virtual User LastUpdatedByUser { get; set; }
来分析类

我在基本实体中共享Id方面有一个不好的经验,如果您计划使用Repository和UnitOfWork模式,您将在以后遇到很多问题。使用SQL Server Management Studio检查当前的数据库结构和表

移动

public int Id { get; set; }
要创建用户类和配置文件,还可以将名称更改为UserId和ProfileId并移动

public virtual User LastUpdatedByUser { get; set; }
来分析类

我在基本实体中共享Id方面有一个不好的经验,如果您计划使用Repository和UnitOfWork模式,您将在以后遇到很多问题。使用SQL Server Management Studio检查当前的数据库结构和表


谢谢,这就成功了。必须仍然使用[ForeignKey(“LastUpdatedByUserId”)]注释属性。我想我现在可能有另一个问题了!不确定这个代码第一件事是否值得麻烦,model first和DB first看起来更吸引人。谢谢,这就成功了。必须仍然使用[ForeignKey(“LastUpdatedByUserId”)]注释属性。我想我现在可能有另一个问题了!不确定这个代码第一件事是否值得麻烦,model first和DB first看起来更有吸引力。