【发布时间】:2015-05-13 07:38:48
【问题描述】:
关于 EF 的一些查询。
问题 -
- 直接使用数据库上下文对象的方法应该是控制器类或模型的一部分吗?
- ContactManagerContext.cs(我将其视为 DAL 层?)我的假设是否正确?
- ContactManager 类应该放在哪里?型号还是 DAL?它目前是 Model 类的一部分。
- 将添加更多问题
这就是我构建类的方式 - 模型和控制器。
请查看并评论代码结构是否正确以及如何改进。
模型类(Contact.cs):
using Contact_Manager.DAL;
namespace Contact_Manager.Models
{
public class Contact
{
[Key]
public int ContactId { get; set; }
[Required, MaxLength(100)]
public string FirstName { get; set; }
[Required, MaxLength(100)]
public string LastName { get; set; }
public string EMail { get; set; }
public string Phone { get; set; }
public string BusinessName { get; set; }
}
public class ContactManager
{
ContactContext db = new ContactContext();
public IEnumerable<Contact> ContactList(int? selectedContact)
{
IQueryable<Contact> contacts = db.Contacts;
return contacts.ToList();
}
}
}
ContactManagerContext.cs (DAL)
------------------------------
using System.Data.Entity;
using System.Linq;
using Contact_Manager.Models;
namespace Contact_Manager.DAL
{
public class ContactContext : DbContext
{
public ContactContext()
: base("ContactMgrDBContext")
{
Database.SetInitializer<ContactContext>(new DropCreateDatabaseIfModelChanges<ContactContext>());
}
public DbSet<Contact> Contacts { get; set; }
}
}
ContactController.cs(控制器类):
using System.Web.Mvc;
using System.Linq;
using Contact_Manager.Models;
namespace Contact_Manager.Controllers
{
public class ContactController : Controller
{
//
// GET: /Contact/
public JsonResult ContactList()
{
ContactManager cMgr = new ContactManager();
IEnumerable<Contact> contactList = cMgr.ContactList(0);
//var contactsJson = JsonConvert.SerializeObject(contacts.ToList());
return Json(contactList, JsonRequestBehavior.AllowGet);
}
public ActionResult Index()
{
return View();
}
}
}
【问题讨论】:
-
当你提到命名空间时,你在谈论很多类
-
不知道为什么我看不到昨天的答案之一。我喜欢这个答案,并将其标记为我的问题的答案。不幸的是,我不记得是谁回答的。但我会等待一个合适的答案,然后相应地标记它。
标签: c# asp.net-mvc-4 design-patterns architecture entity-framework-4.1