【发布时间】:2016-08-27 17:12:02
【问题描述】:
我有以下几点:
public class Broadcast {
public int NumUsersToMessage { get; set; }
public int NumMessagesQueued { get; set; }
public string DbUsersMessaged { get; set; }
public int NumMessagesSent {
get {
return UsersMessaged.Count();
}
}
public List<int> UsersMessaged {
get {
return DbUsersMessaged == null ? new List<int>() : DbUsersMessaged.Split(',').Select(Int32.Parse).ToList();
}
set {
DbUsersMessaged = value != null ? String.Join(",", value) : null;
}
}
}
我的目标是只通过UsersMessaged 访问DbUsersMessaged。我正在尝试做broadcast.UsersMessaged.Add(2),但是由于这不是一项任务,我无法让该属性按我喜欢的方式运行。相反,我必须这样做:
tempList = broadcast.UsersMessaged();
tempList.Add(2);
broadcast.UsersMessaged = tempList;
db.SaveChanges();
这显然是笨拙的。我正在考虑制作 AddReassign 扩展方法,但我想知道 - 这里支持原始类型列表的标准做法是什么?看起来即使使用扩展方法,我最好的镜头也是这样的:
broadcast.UsersMessaged = broadcast.UsersMessaged.AddReassign(2) // yuck!
在任何人问之前 - 我们出于性能原因故意将其非规范化。
【问题讨论】:
-
我能看到的唯一方法是覆盖 .Add() 方法并在其中调用 setter 或以相同的方式运行。
标签: c# .net entity-framework ef-code-first