zoukankan      html  css  js  c++  java
  • EFSQLserver

    1.增加一条烽据

    FLYNEWQKEntities dataContext = new FLYNEWQKEntities();
    Log log = new Log();
    log.Data1 = "tes";
    dataContext.Log.Add(log);
    dataContext.SaveChanges();

    2.修改

    FLYNEWQKEntities dataContext = new FLYNEWQKEntities();
    Log log = dataContext.Log.Where(t => t.AutoID == 1).Take(1).Single();
    log.Data2 = "33";
    dataContext.SaveChanges();

    3.删除

    FLYNEWQKEntities dataContext = new FLYNEWQKEntities();
    Log log = dataContext.Log.Where(t => t.AutoID == 1).Take(1).Single();
    dataContext.Log.Remove(log);
    dataContext.SaveChanges();

    4. 列表

    FLYNEWQKEntities dataContext = new FLYNEWQKEntities();

    var v2 = from t in dataContext.T2_Elderly
    join t0 in dataContext.T1_Set_CareLevel on t.CareLevelID equals t0.CareLevelID.ToString() //new { CareLevelID = t.CareLevelID } equals new { CareLevelID = t0.CareLevelID.ToString() }
    select t0;
    this.gridControl1.DataSource = v2.ToList();

    5.事务

    //事务
    FLYNEWQKEntities dataContext = new FLYNEWQKEntities();
    try
    {

    using (TransactionScope scope = new TransactionScope())
    {
    //Do something with context1
    //Do something with context2
    Log log = new Log();
    log.Data1 = "tes";
    dataContext.Log.Add(log);

    //Save and discard changes
    dataContext.SaveChanges();

    Log log1 = dataContext.Log.Where(t => t.AutoID == log.AutoID).Take(1).Single();
    log.Data2 = "33";
    //Save and discard changes
    dataContext.SaveChanges();
    //throw new Exception("dddd");

    //if we get here things are looking good.
    //scope.Complete();
    }
    }
    catch (Exception ex) {
    MessageBox.Show(ex.ToString());
    }

    6.事务

    FLYNEWQKEntities dataContext = new FLYNEWQKEntities();
    //if (dataContext.Database.Connection != null)
    //{
    // dataContext.Database.Connection.Open();
    //}
    System.Data.Entity.DbContextTransaction tran = dataContext.Database.BeginTransaction();

    try
    {

    Log log = new Log();
    log.Data1 = "tes";
    dataContext.Log.Add(log);

    //Save and discard changes
    dataContext.SaveChanges();

    Log log1 = dataContext.Log.Where(t => t.AutoID == log.AutoID).Take(1).Single();
    log.Data2 = "33";
    //Save and discard changes
    dataContext.SaveChanges();

    //throw new Exception("dddd");
    tran.Commit();
    MessageBox.Show("保存成功!");
    base.Close();


    }
    catch (Exception ex)
    {
    tran.Rollback();
    MessageBox.Show(ex.Message);
    }

    7. 函数

     https://msdn.microsoft.com/zh-cn/library/dd456847.aspx

    http://www.dotblogs.com.tw/programlin/archive/2010/12/16/20179.aspx

    1.Model-Defined Functions的定義是在Conceptual Model,而UDF需定義在Storage Model. 
    而設定的就如同EF設計stored procedure一樣,只是在一些參數上有所不同,但不幸的VS內建的EDM tools只能設計stored procedure

    而無法定義UDF,所以請依上篇文章做法手動用XML Editor開啟EDM File.開啟後在<edmx:StorageModels>區段後加上


    <Function Name="MYGETYEAR" ReturnType="int" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo"> 
       <Parameter Name="time" Type="datetime" Mode="In" /> 
    </Function>

    這邊的XML跟上篇文章很像,差異點在於UDF是定義於Storage Model故所有的資料型別都是sql type,這邊就不再多加說明了,紅字以外的描述都直接套用即可.

    2.修改完 EDM後一樣的如同Model-Defined Functions上篇文章中的步驟二也必須在程式端定義一個類別來供給LINQ套用唯一的差別在於EdmFunctionAttribute的第一個參數namespace

    改為EDM Storage Model區段中的namespace,可以在<edmx:StorageModels>後的<Schema Namespace="TestModel.Store" ../>取得 
    故在程式最後修改如下

     要示写到 静态类,中用静态函数的来写

    public static class DbFunctions
    {
    //[EdmFunction("FLYNEWQKModel.Store", "fun_GetPY" )]
    [DbFunction("FLYNEWQKModel.Store", "fun_GetPY")]
    public static string fun_GetPY(string Str)
    {
    throw new NotSupportedException("Direct calls are not supported.");
    }

    [DbFunction("FLYNEWQKModel.Store", "fun_GetFeeCount")]

    public static decimal? fun_GetFeeCount(string ElderlyID, DateTime Time1)
    {
    throw new NotSupportedException("Direct calls are not supported.");
    }

    [DbFunction("FLYNEWQKModel.Store", "fun_GetHYAmount")]
    public static decimal? fun_GetHYAmount(string FZHNumber)
    {
    throw new NotSupportedException("Direct calls are not supported.");
    }

    }

    在<edmx:StorageModels> 段增加对函数的定义

    <Function Name="fun_GetFeeCount" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" ReturnType="money">
    <Parameter Name="ElderlyID" Type="nvarchar" Mode="In" />
    <Parameter Name="Time1" Type="datetime" Mode="In" />
    </Function>


    <Function Name="fun_GetHYAmount" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" ReturnType="money">
    <Parameter Name="FZHNumber" Type="nvarchar" Mode="In" />
    </Function>

    <Function Name="fun_GetPY" ReturnType="varchar" Aggregate="false" BuiltIn="false" Schema="dbo" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" >
    <Parameter Name="Str" Type="varchar" Mode="In" />
    </Function>

    var v1 = from c in dataContext.T2_Elderly select new { c.ElderlyName, a = SqlFunctions.GetDate(), b = DbFunctions.fun_GetPY(c.ElderlyName), c = DbFunctions.fun_GetFeeCount(c.ElderlyID, SqlFunctions.GetDate().Value), d = DbFunctions.fun_GetHYAmount(c.ElderlyID) };

  • 相关阅读:
    《区块链100问》第56集:权益证明机制是什么?
    《区块链100问》第57集:股份授权证明机制是什么?
    《区块链100问》第58集:零知识证明是什么?
    《区块链100问》第59集:哈希算法是什么?
    《区块链100问》第60集:非对称加密算法是什么?
    《区块链100问》第61集:扩容是什么?
    《区块链100问》第62集:比特币为什么要扩容?
    《区块链100问》第63集:隔离见证是什么?
    使用Nginx后如何在web应用中获取用户ip及原理解释
    MySQL的进程状态
  • 原文地址:https://www.cnblogs.com/xiajing12345/p/4720244.html
Copyright © 2011-2022 走看看