【发布时间】:2025-12-19 20:10:12
【问题描述】:
我已经读过实体框架(我使用的是 EF6)是数据库的抽象。我正在使用视图模型将数据提供给我的视图,因此 EF 实体不会经过我的控制器。我正在使用带有 linq 查询的存储库来获取数据。在控制器中,我实例化 repo 并获取数据。
那么有什么理由为控制器和repo之间的事务创建一个专用对象吗?
例子:
数据库有一个表 Person。
在 MVC 应用程序中,我创建了一个 edmx 文件,该文件创建了一个名为 Person 的部分类。
在我的存储库中:
class Person PersonRepository()
{
public Person GetPerson()
{
using (var db = new MyEntity())
{
var data = db.Person.FirstOrDefault();
var person = new Person()
{
Id = data.PersonId,
FirstName = data.FirstName,
LastName = data.LastName
};
return person;
}
}
或者我需要这样做:
class Person PersonRepository()
{
public Person GetPerson()
{
using (var db = new MyEntity())
{
var data = db.Person.FirstOrDefault();
var person = new PersonDTO()
{
Id = data.PersonId,
FirstName = data.FirstName,
LastName = data.LastName
};
return person;
}
}
【问题讨论】:
-
class Person PersonRepository()这还能编译吗? -
简短回答否,鉴于您使用的是 POCO,请看这里*.com/questions/3779508/…
-
在您提供的示例中,我会说即使做您现在的工作也没有意义,当然,如果您需要将视图特定数据添加到视图模型,这可能会改变,但您可以重构何时何地。记住 YAGNI(你不会需要它)。
标签: c# entity-framework model-view-controller