Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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错误映射ID属性_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# EF错误映射ID属性

C# EF错误映射ID属性,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有两个EF模型,其中一个来自另一个 public class Party { [Key] public Guid Key { get; set; } [Required, MaxLength(50)] public string Name { get; set; } } public class Customer : Party { [Range(1, int.MaxValue)] public int ID { get; set; } }

我有两个EF模型,其中一个来自另一个

public class Party
{
    [Key]
    public Guid Key { get; set; }

    [Required, MaxLength(50)]
    public string Name { get; set; }
}

public class Customer : Party
{

    [Range(1, int.MaxValue)]
    public int ID { get; set; }
}
当我使用如下隐藏字段在编辑视图中输入属性时:

@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.Key)
这两个字段得到相同的值,我得到一个验证错误,因为ID属性不能是GUID

<input data-val="true" data-val-number="The field ID must be a number." data-val-range="Feltet ID må være mellom 1 og 2147483647." data-val-range-max="2147483647" data-val-range-min="1" data-val-required="Feltet ID er obligatorisk." id="ID" name="ID" type="hidden" value="3b9ba191-3a3c-47d9-8bb7-48cc552cc6ec" />
<input data-val="true" data-val-required="Feltet Key er obligatorisk." id="Key" name="Key" type="hidden" value="3b9ba191-3a3c-47d9-8bb7-48cc552cc6ec" />


我怎样才能告诉EF称为ID的属性不是主键(因为我假设EF假设是这样的)?

因为任何域模型都必须在EF中有ID,只需在客户类中创建另一个属性并用[key]装饰它即可

public class Customer : Party
{
    [Key]
    public int CustomID { get; set; }

    [Range(1, int.MaxValue)]
    public int ID { get; set; }
}

这是因为控制器url吗?我的路由设置是{controller}/{action}/{id},我的编辑操作的url是:如果我将id属性重命名为例如CustomerID,并应用Column属性来保留数据库结构,我可以确认字段不再等于Key属性。但是,我的问题是,如何在不将ID属性设置为url的ID部分的情况下保留ID属性。能否显示用于DbContext的代码以及如何映射鉴别器???还有,您使用的是哪个版本的EntityFramework……不,我认为这不正确,因为Party有一个关键属性。我认为问题在于ID属性被分配了url字符串中的值。好的,那么您的数据库模式是什么?你们有一张客人桌和一张聚会桌吗?数据库中的主键是什么?party类和customer类都存储在同一个表中=party有一个名为Discriminator的列,告诉EF每条记录是哪种类型。上面我的型号显示的主键=键。