MVC中EF框架下CodeFirst事务处理,从表数据是根据主表主键添加,而主表主键是自动编号

MVC中EF框架下CodeFirst事务处理,从表数据是根据主表主键添加,而主表主键是自动编号,第1张

EF Code-Frist本身就是支持事务的。
我们的每一次SaveChanges就是一个事务 *** 作,只需要在所有更改都完成后,调用这个方法就可以了。
如果你不愿意,网上还有人给出了手动的开启事务的代码(我没有测试过):

DbConnection con = ((IObjectContextAdapter)ctx)ObjectContextConnection;
conOpen();
using (var tran = conBeginTransaction())
{
// 这里才是事务中的代码
tranCommit();
}
conClose();
以上都是针对一个DbContext,也就是一个数据库的时候,如果 *** 作涉及到多个数据库,还是使用分布式事务 *** 作比较靠谱。

原文链接:>用于支持开发人员通过对概念性应用程序模型编程(而不是直接对关系存储架构编程)来创建数据访问应用程序。目标是降低面向数据的应用程序所需的代码量并减轻维护工作。Entity Framework 应用程序有以下优点:· 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。· 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。· 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。· 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。· 多个概念性模型可以映射到同一个存储架构。· 语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。实体框架Entity Framework 是 ADONET 中的一组支持开发面向数据的软件应用程序的技术。在EF中的实体数据模型(EDM)由以下三种模型和具有相应文件扩展名的映射文件进行定义。· 概念架构定义语言文件 (csdl) -- 定义概念模型。· 存储架构定义语言文件 (ssdl) -- 定义存储模型(又称逻辑模型)。· 映射规范语言文件 (msl) -- 定义存储模型与概念模型之间的映射。实体框架 使用这些基于 XML 的模型和映射文件将对概念模型中的实体和关系的创建、读取、更新和删除 *** 作转换为数据源中的等效 *** 作。EDM 甚至支持将概念模型中的实体映射到数据源中的存储过程。它提供以下方式用于查询 EDM 并返回对象:· LINQ to Entities -- 提供语言集成查询 (LINQ) 支持用于查询在概念模型中定义的实体类型。· Entity SQL -- 与存储无关的 SQL 方言,直接使用概念模型中的实体并支持诸如继承和关系等 EDM 功能。

这是一个投影 *** 作,表示读取把实体类型映射成其他的类型。
var names = Search<Student>(s=>sName);
这行代码表示把学生的Name属性映射出来。

Linq 查询吗?
var query=dbtableswhere(o=>oname=="dasdas"&&age<=30&&age>=21)tolist();

// 使用Lambda表达式树构建动态查询
public virtual void Delete<TEntity>(string field, string id) where TEntity : class
{
      ParameterExpression pe = ExpressionParameter(typeof(TEntity), "m");
      MemberExpression left = ExpressionProperty(pe, field);
      // 具体类型根据实际情况,这里假设是int,So,强制转换int。
      ConstantExpression right = ExpressionConstant(ConvertToInt32(id));
      BinaryExpression binary = ExpressionEqual(left, right);
      var predicate = ExpressionLambda<Func<TEntity, bool>>(binary, new[]{pe});
      TEntity entity = dbSetCast<TEntity>()Where(predicate)FirstOrDefault();
       
      // TO DO SOMETHING
}

另外,已在你的另一个提问链接回答过了。请参阅。

我用的是50没这个问题,不过如果你理解T4模板的话这个问题很好解决。

这个应该是60重构了一些命名空间后,和VS原有的实体数据模型模板不一致了。

解决办法如下:修改你的 xxContexttt 文件:

if (containerFunctionImportsAny())
{
#>
using SystemDataObjects;  // 改成 using SystemDataEntityCoreObjects;
using SystemDataObjectsDataClasses;
using SystemLinq;
<#
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10542158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存