使用“代码优先”创建外键,但实际上首先使用数据库

瓦卡诺

我的Sql Server数据库中有以下视图:

Shipment.Shipment
     * ShipmentId --> PK
     * CourierId

Ref.Courier
     * CourierId --> PK

由于这些是视图,因此它们上没有外键。基础表是旧表,也没有外键。

但是我想让我的实体框架模型认为有外键。(具体而言Shipment.Shipment.CourierId => Ref.Courier.CourierId

我可以先在数据库中执行此操作,但是最近我切换到“代码优先”,而且似乎无法使用该ForeignKey属性来使其正常工作

但是,我并没有真正做到“代码优先”。我从现有数据库的视图中改造了实体类。

因此,使用“代码优先”语法,如何为现有实体添加关联/外键?(即使数据库中没有一个)

这是我现有实体的配对版本:

[Table("Shipment.Shipment")]
public partial class Shipment
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ShipmentId { get; set; }

    public int CourierId { get; set; }

    [StringLength(50)]
    public string Airbill { get; set; }
}


[Table("Ref.Courier")]
public partial class Courier
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CourierId { get; set; }

    [StringLength(50)]
    public string CourierName { get; set; }
}
安舒尔·尼甘(Anshul Nigam)

将您的代码更改为

[Table("Shipment.Shipment")]
public partial class Shipment
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ShipmentId { get; set; }

    public int CourierId { get; set; }

    /* this will tell EF about relationship with Courier,assuming it is 1-1 */
    public virtual Courier Courier { get; set; }

    [StringLength(50)]
    public string Airbill { get; set; }
}


[Table("Ref.Courier")]
public partial class Courier
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int CourierId { get; set; }

    [StringLength(50)]
    public string CourierName { get; set; }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

首先使用代码时如何创建数据库

来自分类Dev

使用EF Core时,通过[ForeignKey]访问相关表而实际上在数据库中没有外键

来自分类Dev

无法使用Entity Framework代码优先+没有数据库创建数据库

来自分类Dev

首先使用 EF 代码错误地创建了外键

来自分类Dev

如何使用数据库优先方法命名外键

来自分类Dev

EF代码首先在使用sqlclient provider启动时创建数据库

来自分类Dev

在实体框架代码上交换外键首先来自数据库

来自分类Dev

如何使用代码优先数据库创建编辑/删除/创建视图

来自分类Dev

现有数据库中代码优先的外键问题

来自分类Dev

如何使用实体框架代码优先方法正确创建数据库

来自分类Dev

使用Entity Framework代码优先方法创建的数据库的默认物理位置

来自分类Dev

无法使用实体框架代码优先的凭据创建数据库?

来自分类Dev

使用实体框架创建其他类(数据库中的代码优先)

来自分类Dev

实体框架:使用代码优先方法帮助创建数据库

来自分类Dev

在SQL Server中使用代码优先实体框架创建数据库

来自分类Dev

使用Entity Framework代码优先的数据库问题

来自分类Dev

外键创建数据库

来自分类Dev

数据未使用外键插入数据库

来自分类Dev

Java使用外键将数据插入数据库

来自分类Dev

Azure使用代码创建数据库

来自分类Dev

SQLite3 + Python3-使用外键创建数据库

来自分类Dev

使用实体框架的最佳方法(数据库优先,模型优先,代码优先)

来自分类Dev

首先使用DataAnnotation和代码来创建使用Identity 2.2.1的ApplicationUser的外键

来自分类Dev

如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

来自分类Dev

如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

来自分类Dev

将外键设置为可空之后,实体框架代码首先无法更新数据库

来自分类常见问题

休眠:无法使用外键查询数据库表

来自分类Dev

使用外键和Django更新MySQL数据库

来自分类Dev

为什么CMS数据库不使用外键?

Related 相关文章

  1. 1

    首先使用代码时如何创建数据库

  2. 2

    使用EF Core时,通过[ForeignKey]访问相关表而实际上在数据库中没有外键

  3. 3

    无法使用Entity Framework代码优先+没有数据库创建数据库

  4. 4

    首先使用 EF 代码错误地创建了外键

  5. 5

    如何使用数据库优先方法命名外键

  6. 6

    EF代码首先在使用sqlclient provider启动时创建数据库

  7. 7

    在实体框架代码上交换外键首先来自数据库

  8. 8

    如何使用代码优先数据库创建编辑/删除/创建视图

  9. 9

    现有数据库中代码优先的外键问题

  10. 10

    如何使用实体框架代码优先方法正确创建数据库

  11. 11

    使用Entity Framework代码优先方法创建的数据库的默认物理位置

  12. 12

    无法使用实体框架代码优先的凭据创建数据库?

  13. 13

    使用实体框架创建其他类(数据库中的代码优先)

  14. 14

    实体框架:使用代码优先方法帮助创建数据库

  15. 15

    在SQL Server中使用代码优先实体框架创建数据库

  16. 16

    使用Entity Framework代码优先的数据库问题

  17. 17

    外键创建数据库

  18. 18

    数据未使用外键插入数据库

  19. 19

    Java使用外键将数据插入数据库

  20. 20

    Azure使用代码创建数据库

  21. 21

    SQLite3 + Python3-使用外键创建数据库

  22. 22

    使用实体框架的最佳方法(数据库优先,模型优先,代码优先)

  23. 23

    首先使用DataAnnotation和代码来创建使用Identity 2.2.1的ApplicationUser的外键

  24. 24

    如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

  25. 25

    如何在棱镜WPF模块化应用程序中首先使用代码动态创建数据库表?

  26. 26

    将外键设置为可空之后,实体框架代码首先无法更新数据库

  27. 27

    休眠:无法使用外键查询数据库表

  28. 28

    使用外键和Django更新MySQL数据库

  29. 29

    为什么CMS数据库不使用外键?

热门标签

归档