例如,当将卡片与集合相关联时,我有:
public class Card
{
public virtual int CardId { get; set; }
// belongs to a Set
public virtual int SetId { get; set; }
public virtual Set Set { get; set; }
}
为什么我需要 Set 和 SetId?
例如,当将卡片与集合相关联时,我有:
public class Card
{
public virtual int CardId { get; set; }
// belongs to a Set
public virtual int SetId { get; set; }
public virtual Set Set { get; set; }
}
为什么我需要 Set 和 SetId?
你不需要设置它。您可以将“Set”指定为虚拟对象,以便在运行时使用导航属性覆盖它。实体框架将自动在表上创建外键“SetId”,即使您无法从对象域模型访问它。
您不需要设置它,但我个人喜欢访问对象上的底层外键 id,因为我可以指定与 int 的关系,而不必实例化相关对象。
编辑:添加示例代码
具有以下课程:
public class Card
{
public virtual int CardId { get; set; }
// belongs to a Set
public virtual int SetId { get; set; }
public virtual Set Set { get; set; }
}
public class Set
{
public int SetId { get; set; }
public string SetName { get; set; }
}
我可以这样做:
var context = new Context(); //Db Code-First Context
var set = context.Sets.First(s => s.SetName == "Clubs"); //Get the "Clubs" set object
//Assign the set to the card
var newCard = new Card();
newCard.Set = set;
//Save the object to the databae
context.Cards.Add(newCard);
context.SaveChanges();
或者做这样的事情:
//Assign the set ID to the card
var newCard = new Card();
newCard.SetId = 4;
//Save the object to the databae
context.Cards.Add(newCard);
context.SaveChanges();
并且对象将以相同的方式存储。
想象一下,您正在将 ViewModel 发布到控制器。从视图上的下拉列表中传递选定的 Id 更容易,而不是整个对象。