Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 实体框架7外键列名_C#_Entity Framework_Entity Framework Core - Fatal编程技术网

C# 实体框架7外键列名

C# 实体框架7外键列名,c#,entity-framework,entity-framework-core,C#,Entity Framework,Entity Framework Core,我有一个MasterUserApprovalOfficial实体,它有两个外键:MasterUserId和SoftwareSystemId。EF7足够聪明,可以看出这两个属性是外键 public class MasterUserApprovalOfficial { public int MasterUserApprovalOfficialId { get; set; } public int MasterUserId { get; set; } public Mast

我有一个MasterUserApprovalOfficial实体,它有两个外键:MasterUserId和SoftwareSystemId。EF7足够聪明,可以看出这两个属性是外键

public class MasterUserApprovalOfficial
{
    public int MasterUserApprovalOfficialId { get; set; }

    public int MasterUserId { get; set; }

    public MasterUser MasterUser { get; set; }

    public int SofwareSystemId { get; set; }

    public SoftwareSystem SoftwareSystem { get; set; }

    public bool Active { get; set; }

    public DateTime CreateDate { get; set; }

    public MasterUserApprovalOfficial()
    {
        CreateDate = DateTime.Now;
    }
}
如果我查看创建的表,MasterUserId列是按预期创建和命名的,但是SoftwareSystemId列创建为
SoftwareSystemId
(类的名称附加在主键的名称之后)


有什么原因吗?

使用
外键
属性修复此问题:

[ForeignKey("SoftwareSystem"),Column("SoftwareSystemId")]
public int SoftwareSystemId { get; set; }

默认情况下,外键后面将添加“Id”,但由于您已经有一个具有该名称的属性(EF显然不识别它是外键),因此它会被更改为
SoftwareSystemSoftwareSystemId
使用
foreignkey
属性来修复此问题:

[ForeignKey("SoftwareSystem"),Column("SoftwareSystemId")]
public int SoftwareSystemId { get; set; }
public int SofwareSystemId { get; set; }
默认情况下,外键后面将添加“Id”,但由于您已经有了一个具有该名称的属性(EF显然无法识别它是外键),因此它会更改为
SoftwareSystemSoftwareSystemId

public int SofwareSystemId { get; set; }
再次阅读该属性。缺少一个t:)

第二个答案也是正确的,外键不需要属性。班上有一个人就够了

再次阅读该属性。缺少一个t:)


第二个答案也是正确的,外键不需要属性。类中的一个成员就足够了

很好的捕获,很奇怪,它更改了外键的名称,事实上,似乎是EF的一种奇怪行为。我对此的唯一解释是EF是“智能”的,不想在生成列时混淆用户。谢谢,完全错过了!阅读,真实的,我想是一门艺术!不客气。你能告诉我们外键现在是否按它应该的名称命名吗?知道它会很有趣:)是的,它现在的名称和预期的一样。很好的捕捉,很奇怪它改变了外键的名称,然后它确实,看起来像是EF的一个奇怪行为。我对此的唯一解释是EF是“智能”的,不想在生成列时混淆用户。谢谢,完全错过了!阅读,真实的,我想是一门艺术!不客气。你能告诉我们外键现在是否按它应该的名称命名吗?我很想知道:)是的,现在它的名字和预期的一样。