ASP.NET MVC 和Entify Framework 之间的关系
ASP.NET中的Model是不是由EF创建的啊?EF是将SQLserver语句处理成为自己的一个操作列表,然后再ASP.NET中的M中去使用?...
ASP.NET 中的Model 是不是由EF 创建的啊? EF是将SQL server 语句 处理成为自己的一个操作列表,然后再ASP.NET 中的M 中去使用?
展开
1个回答
展开全部
这个有两种方式,一种是Code first,这种情况下,实体是自己创建,然后映射到数据库,生成相应的数据表。另外一种就是通过数据库映射生成C#代码,即生成edmx文件,这些是自动生成的,其中不仅有C#代码,还有很多增删改查的方法,还有数据的关系图等。
第二种情况下,映射完成之后,是非常不推荐去删除或增加代码,比如,我想添加实体的验证条件,怎么办?或者是我添加生成的数据字段,难道我在这个代码中去添加?这些做法都不可取,容易发生错误。
解决方案是,无论字段或其他条件是否相同,都建议添加相应的实体,添加的这些实体就可以作为与数据库所映射的数据“通信”。如果你要添加验证,就在这个实体上的字段上验证就可以了。Controller或视图中用的就是我们建立的这个实体。而他们之间的通信就比较简单了,如下所示:
var resultList = db.ZZ_Car_Licence_Forwarder.Select(x => new CarLicenceForwarderItem
{
Id = x.Seq,
DateCreate = x.Create_Date,
Days = x.Days,
CarLicence = x.Car_Licence,
TailLicence = x.Tail_Licence1,
TailLicence2 = x.Tail_Licence2,
Driver = x.Driver,
DriverTel = x.Driver_Tel,
RcvGroupId = x.RCV_GroupId,
BegDate = x.Begin_Dt,
EndDate = x.End_Dt,
DateTimeStart = x.Begin_Times,
DateTimeEnd = x.End_Times
})
.AsQueryable();
其中,db是我定义的数据库对象,CarLicenceForwarderItem就是我们自己定义的实体,这样resultList得到的就是我们自定义实体的集合。
第二种情况下,映射完成之后,是非常不推荐去删除或增加代码,比如,我想添加实体的验证条件,怎么办?或者是我添加生成的数据字段,难道我在这个代码中去添加?这些做法都不可取,容易发生错误。
解决方案是,无论字段或其他条件是否相同,都建议添加相应的实体,添加的这些实体就可以作为与数据库所映射的数据“通信”。如果你要添加验证,就在这个实体上的字段上验证就可以了。Controller或视图中用的就是我们建立的这个实体。而他们之间的通信就比较简单了,如下所示:
var resultList = db.ZZ_Car_Licence_Forwarder.Select(x => new CarLicenceForwarderItem
{
Id = x.Seq,
DateCreate = x.Create_Date,
Days = x.Days,
CarLicence = x.Car_Licence,
TailLicence = x.Tail_Licence1,
TailLicence2 = x.Tail_Licence2,
Driver = x.Driver,
DriverTel = x.Driver_Tel,
RcvGroupId = x.RCV_GroupId,
BegDate = x.Begin_Dt,
EndDate = x.End_Dt,
DateTimeStart = x.Begin_Times,
DateTimeEnd = x.End_Times
})
.AsQueryable();
其中,db是我定义的数据库对象,CarLicenceForwarderItem就是我们自己定义的实体,这样resultList得到的就是我们自定义实体的集合。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询