Asp.net mvc 5 EF6和MVC5:使用两个字段作为组合键
我有几个对象(产品、规则、价格细节等)在CRUD应用程序中管理和存储信息。我想要一种保存数据更新日志的方法,为此,我创建了一个更新类,在每个数据类中引用为Asp.net mvc 5 EF6和MVC5:使用两个字段作为组合键,asp.net-mvc-5,entity-framework-6,Asp.net Mvc 5,Entity Framework 6,我有几个对象(产品、规则、价格细节等)在CRUD应用程序中管理和存储信息。我想要一种保存数据更新日志的方法,为此,我创建了一个更新类,在每个数据类中引用为ICollection Updates 当所有表都生成时,EF为更新表中的每个类(产品ID、规则ID等)创建一个FK。这似乎效率极低。我是否可以使用双字段键,例如enum ObjectType和long ID?或者,我可以使用字符串ID并强制使用一个模式,其中字符串的前N个字符标识引用对象吗?如果是后者,数据库能否自动递增字符串值 以下是一些示
ICollection Updates
当所有表都生成时,EF为更新表中的每个类(产品ID、规则ID等)创建一个FK。这似乎效率极低。我是否可以使用双字段键,例如enum ObjectType
和long ID
?或者,我可以使用字符串ID
并强制使用一个模式,其中字符串的前N个字符标识引用对象吗?如果是后者,数据库能否自动递增字符串值
以下是一些示例代码,为放置位置进行了修剪:
public class Update
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ID { get; set; }
public string Reason { get; set; }
public DateTime TimeOfUpdate { get; set; }
public long Product_ID { get; set; }
public long Rule_ID { get; set; }
}
public class Product
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ID { get; set; }
public string Name { get; set; }
public PriceDetail Price { get; set; }
public ICollection<Update> Updates { get; set; }
}
public class Rule
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long ID { get; set; }
public string Name { get; set; }
public ICollection<Condition> Conditions { get; set; }
public ICollection<Update> Updates { get; set; }
}
公共类更新
{
[数据库生成(DatabaseGeneratedOption.Identity)]
公共长ID{get;set;}
公共字符串原因{get;set;}
public DateTime TimeOfUpdate{get;set;}
公共长乘积_ID{get;set;}
公共长规则_ID{get;set;}
}
公共类产品
{
[数据库生成(DatabaseGeneratedOption.Identity)]
公共长ID{get;set;}
公共字符串名称{get;set;}
公共价格详细信息价格{get;set;}
公共ICollection更新{get;set;}
}
公共阶级规则
{
[数据库生成(DatabaseGeneratedOption.Identity)]
公共长ID{get;set;}
公共字符串名称{get;set;}
公共ICollection条件{get;set;}
公共ICollection更新{get;set;}
}
处理审核逻辑有多种方法