【发布时间】:2012-05-02 04:30:06
【问题描述】:
这个问题是关于控制器,即使用代码优先实体框架方法通过模型关联和继承生成的代码。
我有以下具有关联和继承的模型设置。
[Table("User")]
public class User {
[Key]
public int UserId { get; set; }
public string Username { get; set; }
}
[Table("UserProfile")]
public class UserProfile {
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key, ForeignKey("User")]
public int UserId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public virtual User User { get; set; }
}
[Table("Client")]
public class Client : UserProfile {
public bool Approved { get; set; }
}
然后我在 VS2010 中生成一个控制器,将模板设置为“具有读/写操作和视图的控制器,使用实体框架”,将模型类设置为“客户端”,将数据上下文类设置为我的上下文类。
这会生成以下 Index 方法。
public class ClientController : Controller {
private DataContext db = new DataContext();
public ViewResult Index() {
var users = db.UserProfiles.Include(u => u.User);
return View(users.ToList());
}
...
}
怎么不像下面这样?
public class ClientController : Controller {
private DataContext db = new DataContext();
public ViewResult Index() {
var users = db.Clients.Include(u => u.User);
return View(users.ToList());
}
...
}
或者这个?
public class ClientController : Controller {
private DataContext db = new DataContext();
public ViewResult Index() {
var users = db.UserProfiles.OfType<Client>().Include(u => u.User);
return View(users.ToList());
}
...
}
另外,Create 方法使用
db.UserProfiles.Add(client);
我想知道为什么不使用以下内容?
db.Clients.Add(client);
关于我应该使用哪种方法有什么建议吗?
【问题讨论】:
标签: asp.net-mvc entity-framework inheritance