我们有一个使用 Entity Framework 6 的 .NET Framework 4.8 应用程序。
现在我们遇到一个问题,需要添加一些不保证唯一性的表(没有主键,行不能重复)。我们无法修改这些表,因为这可能会破坏系统(这个表每天凌晨 4 点都会被一个我们无法控制的程序重新填充)。
与这个问题中描述的问题几乎完全相同,但答案只是说不要使用实体框架 6。我能想到的另一种选择是有一个视图或另一个程序将该表的数据导入到新表中。
实体框架方面真的没有 Fluent API 或注解的解决方法吗?难道真的需要引入一种全新的方法来访问数据库,或者仅仅因为 EF6 中实体必须有主键就引入一个新的视图吗?
表关系的示例(实际的表,但我删除了大多数不相关的列):
class Customer
{
[Key]
public int CustomerID { get; set; }
public string FirstName { get; set; }
public virtual ICollection<CustomerOutboundEvent> CustomerOutboundEvents { get; set; }
}
// The new table
class CustomerOutboundEvent
{
// Adding key that doesn't actually exist will cause this error: Invalid column name 'CustomerOutboundEventID'.
//[Key]
//public int CustomerOutboundEventID { get; set; }
public int CustomerID { get; set; }
public Customer Customer { get; set; }
public string OutboundNumber { get; set; }
public string EventMessage { get; set; }
}