我的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; }
}
将您的代码更改为
[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] 删除。
我来说两句