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) };

  • 相关阅读:
    1082 射击比赛 (20 分)
    1091 N-自守数 (15 分)
    1064 朋友数 (20 分)
    1031 查验身份证 (15 分)
    1028 人口普查 (20 分)
    1059 C语言竞赛 (20 分)
    1083 是否存在相等的差 (20 分)
    1077 互评成绩计算 (20 分)
    792. 高精度减法
    791. 高精度加法
  • 原文地址:https://www.cnblogs.com/xiajing12345/p/4720244.html
Copyright © 2011-2022 走看看