作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
数据库结构
我有一个非常非规范化的 SQL 表,其结构如下:
CREATE TABLE logistix.shipments
(
shipment_id INT NOT NULL PRIMARY KEY,
destination_id NVARCHAR(15) NOT NULL PRIMARY KEY,
pallet_id INT NOT NULL PRIMARY KEY,
destination_order INT NOT NULL,
pallet_description NVARCHAR(40) NOT NULL
)
虽然每个特定记录都是唯一的,但一次货件可以有多个托盘运往多个目的地。
.NET 接口(interface)
这将由 EF 对象操作,我想将其构造如下:
class ShippingContext : DbContext
{
public virtual DbSet<Shipment> Shipments {get; set;}
}
class Shipment
{
int ShipmentId {get; set;}
List<Destination> ShipmentStops {get; set;}
}
class Destination
{
string DestinationId {get; set;}
int DestinationOrder {get; set;}
List<Pallet> Pallets {get; set;}
}
class Pallet
{
int PalletId {get; set;}
string PalletDescription {get; set;}
}
问题
虽然我找到了关于将表拆分为一对一实体以及将外键数据映射到 EF 中的集合的教程,但我找不到任何关于将列从一个表映射到集合的教程。这可能吗,或者我是否仅限于拆分表、创建 View 或创建每个列都有一个属性的 POCO 类?
结局
另一个应用程序将访问 SQL 表以生成关于任意数量的 cargo 的报告,因此 Powers That Be 出于性能考虑选择使用非规范化表,而不是一套规范化表和 View ,后者需要更长的检索时间。
最佳答案
你的类应该看起来像这样链接
public class ShipmnetContext : DbContext
{
public DbSet<Shipment> Shipments { get; set; }
public DbSet<Destination> Destinations { get; set; }
public DbSet<Pallet> Pallets { get; set; }
}
public class Shipment
{
public int ShipmentId { get; set; }
public ICollection<Destination> ShipmentStops { get; set; }
public Shipment()
{
ShipmentStops = new HashSet<Destination>();
}
}
public class Destination
{
[Key]
public string DestinationId { get; set; }
public int DestinationOrder { get; set; }
//[Required]
public Shipment Shipment { get; set; } //Foreign key to Shipment table, make property NotNull by adding [Required] attribute
public ICollection<Pallet> Pallets { get; set; }
public Destination()
{
Pallets = new HashSet<Pallet>();
}
}
public class Pallet
{
public int PalletId { get; set; }
public string PalletDescription { get; set; }
public Destination Destination { get; set; } //Foreign key to Destination table
}
关于c# - 是否可以将表拆分为具有一对多关系的 EF 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39518282/
我是一名优秀的程序员,十分优秀!