zoukankan      html  css  js  c++  java
  • CodeFirst 表之间的关联

    多重性关系可以是Optional(一个属性可拥有一个单个实例或没有

    Required(一个属性必须拥有一个单个实例

    Many很多的(一个属性可以拥有一个集合或一个单个实例)。

    Has方法包括如下几个:

    • HasOptional

    • HasRequired

    • HasMany

    在多数情况还需要在Has方法后面跟随如下With方法之一:

    • WithOptional

    • WithRequired

    • WithMany

    一对多

    modelBuilder.Entity<Destination>()
    .HasMany(d => d.Lodgings)
    .WithOptional(l => l.Destination);

    Destination一对多或零对多Lodging

    如果将WithOptional改成WithRequired  这将使Lodgings必须对应一个Destination,如果删除Destination将级联删除Lodgings 详细>>

    关闭级联删除的方法:

    现在你可以设置此关系的WillCascadeOnDelete为false:

    HasRequired(l=>l.Destination)

    .WithMany(d=>d.Lodgings)

    .WillCascadeOnDelete(false)

    一对一

    modelBuilder.Entity<PersonPhoto>()

    .HasRequired(p => p.PhotoOf)

    .WithOptional(p => p.Photo);

    PersonPhoto一对零或一对一Photo

    多对多关系

    modelBuilder.Entity<Destination>()

    .HasMany(d => d.Lodgings)

    .WithRequired()

    .HasForeignKey(l => l.LocationId);

    Destination多对多Lodging

    modelBuilder.Entity<Help>()

    .HasMany<Help>(t => t.Helps)

    .WithMany()

    .Map(m => { m.ToTable("RelatedHelp"); });

    多对多的关系语法让我比较费解。求高手解释一下

  • 相关阅读:
    获取exe和dll里面的资源
    [C++] 反编译器
    再一次利用with as 优化SQL
    编码指南:寻找科学中的艺术
    对手机支付安全机制的思考
    用adblock过滤页面上固定位置的悬浮窗
    git卡在Resolving deltas 100%的解决办法
    十字路口的程序员
    hdu 2555
    hdu 1864
  • 原文地址:https://www.cnblogs.com/AspDotNetMVC/p/2966923.html
Copyright © 2011-2022 走看看