C# 向数据库集添加对象时出现InvalidCastException

C# 向数据库集添加对象时出现InvalidCastException,c#,entity-framework,C#,Entity Framework,我有两节课 [Table("Kunden")] public class Kunde { public Guid Id { get; set; } [Required, ForeignKey("Id")] public virtual List<Standort> OrtStandort { get; set; } public Kunde() { Id = Guid.

我有两节课

[Table("Kunden")]
public class Kunde
{

    public Guid Id { get; set; }
 

    [Required, ForeignKey("Id")]
    public virtual List<Standort> OrtStandort { get; set; }

    
    public Kunde()
    {
        Id = Guid.NewGuid();
        OrtStandort = new List<Standort>();
    }
}

[Table("Standorte")]
public class Standort
{
    public Guid Id { get; set; }

    public Standort()
    {
        Id = Guid.NewGuid();
        //KontaktAnsprechpartner = new List<Ansprechpartner>();
    }
}

public class HausarbeitContext : DbContext
{
    public DbSet<Kunde> Kunden { get; set; }
    
    public DbSet<Standort> Standort { get; set; }
    
    // ...
}
         
         
         
[表(“昆登”)]
公开课昆德
{
公共Guid Id{get;set;}
[必填项,外键(“Id”)]
公共虚拟列表或标准{get;set;}
公共昆德()
{
Id=Guid.NewGuid();
OrtStandort=新列表();
}
}
[表(“标准”)]
公共阶级立场
{
公共Guid Id{get;set;}
公众支持()
{
Id=Guid.NewGuid();

//KontaktAnsprechpartner=new List

您可能需要包含这两个实体的完整定义。乍一看,最突出的一点是: //裸体

Kunde-Standort关系的FK在指向父项的单数ID列的多个端中进行管理

或者,要排除支架实体内部的
KundeId
属性,请利用阴影属性(EF Core)或在不使用EF 6中的
Map(x=>x.MapKey(“KundeId”)
定义字段的情况下对其进行映射

另一方面,在为关键列使用GUID时,我强烈建议使用数据库生成的方法(将列标记为
Identity
),而不是在代码中设置,然后将这些设置为使用顺序GUID生成。例如,对于SQL Server,使用
NEWSEQUENTIALID()
而不是
NEWID()


如果您确实需要将它们设置为代码,那么我将查看选项,以便以索引友好的方式生成所选数据库的GUID,并实现一个GUID生成器,该GUID生成器可以安排组成GUID的各种元素,以便数据库索引可以有效地对它们进行排序。默认的随机化.NET GUID将导致考虑。可读取索引表碎片。在可以看到10行以上的数千行的系统中,这可能会导致相当大的内存/磁盘使用问题和性能问题。

“Kunde”是德语的意思:“Customer”和“Kunden”是多元论。更正了拼写。我在访问德国时发现,我的德语发音甚至比我的sp还要差注:D
 haDB/*HausarbeitContext*/.Kunden/*DbSet<Kunde>*/.Add(kunde);
[Required, ForeignKey("Id")]
public virtual List<Standort> OrtStandort { get; set; }
public class Kunde
{
     [Key]
     public Guid Id { get; set; }

     public virtual ICollection<Standort> OrtStandort { get; set; } = new List<Standort>();
}

public class Standort
{
    [Key]
    public Guid Id { get; set; }
    
    public Guid KundeId { get; set; }
    [ForeignKey("KundeId")]
    public virtual Kunde Kunde { get; set; }
}
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }