实体框架数据库模型

时间:2017-05-05 19:20:10

标签: c# entity-framework database-design foreign-keys

亲爱的实体专家和其他人,

我有以下实体,

基类个人:

 public abstract class Individual
    {
        [Key]
        public int IndividualID { get; set; }
        ... other properties
    }

Yogi:

 [Table("Yogis")]
    public class Yogi : Individual
    {
        public string Firstname { get; set; }
        public string Lastname { get; set; }
        public DateTime Birthdate { get; set; }
    }

客户:

[Table("Customers")]
public class Customer : Individual
{
    public string Name { get; set; }

    [ForeignKey("VATID")] // tried with and without
    public virtual VAT VAT { get; set; }
}

VAT:

public class VAT
{
    [Key]
    public int VATID { get; set; }     

    [Required]
    public virtual Customer VATHolder { get; set; }
    ... other properties
}

DbContext:

  public DbSet<Individual> Individuals { get; set; }
  public DbSet<VAT> VATS { get; set; }

所以上面创建了一个表格增值税,其中VATID是2开始时应该是1,我不明白为什么会发生这种情况,这应该是1不是吗?此外,任何参考客户和表格的表格中都没有参考。增值税,我如何创建一个单独的表VAT_Customer,你有VATID&amp;客户ID?

这是我创建和插入实体Customer的方式:

        VAT vat = new VAT("123456789");
        DataBaseHandler.InsertIndividual(new Customer("Customer name", vat,...));

插入功能

public static void InsertIndividual(Individual individual)
    {
        using (MyDbContext ctx = new MyDbContext())
        {               
                ctx.Individuals.Add(individual);    
                ctx.SaveChanges();                                    
        }
    }

我尝试了几种方式(EXAMPLES HERE),但我更喜欢TPT方式,可以单独查看任何实体或实体之间的关系。我做错了什么,我将如何取得理想的结果?如果我能澄清任何事情,请告诉我。提前感谢您的任何帮助或建议!

亲切的问候!

1 个答案:

答案 0 :(得分:1)

如果你想要1:1的关系:

,你的ForeignKey展示位置应该是这样的
enter code here
[ForeignKey("VAT")] 
public virtual int VATId { get; set; }
public virtual VAT VAT { get; set; }

ForeignKey中的名称与您的类相同。

希望这可以提供帮助