zoukankan      html  css  js  c++  java
  • Entity Framework 6 Alpha 3为Code First提供对存储过程支持,并提供连接恢复功能

    Microsoft宣布Entity Framework 6 Alpha 3已 经可以下载了,它现在支持通过Fluent API将Code First映射到对应的新增、修改和删除功能的存储过程;添加了连接恢复功能;包含了来自iceclow和UnaiZorrilla的pull request内容;并添加了新的DbContext的API,以允许你管理自己的事务。

    根据Microsoft所说,这三种存储过程在创建时需要遵循类似于<type_name>Insert,<type_name>Update 及<type_name>_Delete这样的格式。另外,方法的参数名称需要和属性名称相对应,新增和修改的存储过程需要为每个属性创建一 个对应的参数,除了那些标记为ID(Identity)及计算所得的属性。而删除的存储过程则需要为实体(entity)的主键值创建一个对应的参数。
    让我们看一看以下代码片段:

    public class Blog 
    { 
     public int BlogId { get; set; } 
     public string Name { get; set; } 
     public string Url { get; set; } 
    }

    对应以上代码的新增存储过程看起来应该是以下这样:

    CREATE PROCEDURE [dbo].[Blog_Insert] 
     @Name varchar(max), 
     @Url varchar(max) 
    AS 
     INSERT INTO [dbo].[Blogs] ([Name], [Url])
     VALUES (@Name, @Url)
     SELECT SCOPE_IDENTITY() AS BlogId    

    修改和删除的存储存储过程则按照如下方式编写:

    CREATE PROCEDURE [dbo].[Blog_Update] 
    @BlogId int,  @Name varchar(max),  @Url varchar(max) AS  UPDATE [dbo].[Blogs]   SET [Name] = @Name, [Url] = @Url WHERE BlogId = @BlogId;
    CREATE PROCEDURE [dbo].[Blog_Delete] @BlogId int AS DELETE FROM [dbo].[Blogs] WHERE BlogId = @BlogId

    官方文档详细地介绍了所有可能的场景细节。

    Entity Framework 6 Alpha 3加入了连接恢复功能,能够从短暂的连接失败中自动恢复。它的实现使用了IExecutionStrategy接口,而在其中的具体实现又使用到了IRetriableExecutionDector及IRetryDelayStrategy接口。

    根据官方信息来源,Entity Framework将包含4个执行策略(Execution Strategy),分别为 NonRetryingExecutionStrategy,DefaultSqlExecutionStrategy,ExecutionStrategy 和SqlAzureExecutionStrategy。

    Entity Framework Alpha 3提供了一项功能,它是来自iceclow提交的一个pull request,允许你创建定制化的数据迁移操作,并在一个定制化迁移SQL脚本生成器中处理这些操作。Microsoft ADO.NET Entity Framework的项目经理Rowan Miller已经通过相关的代码示例介绍了iceclow的实现方式。

    Alpha 3也允许你使用来自UnaiZorrilla所 提交的pull request,它提供了一个可插式的复数化与单数化的服务。另一项所包含的功能是允许你通过使用 DbContext.Database.UseTransaction及DbContext.Database.BeginTransaction API管理你自己的事务。

  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/shihao/p/2945284.html
Copyright © 2011-2022 走看看