zoukankan      html  css  js  c++  java
  • [EF]

      随着EF5的发布,新增了对数据库(SQL Server) UDF的支持,具体可以看以下的连接:https://msdn.microsoft.com/en-us/data/hh859577.aspx,新发布的EF6也继承了这个特性。问题是这个UDF貌似只是针对TVF-Table Value Function,在尝试导入一个SCALAR Function的时候,很可惜,该function不能被导入。

      原因就是在EF6的版本里还没有对Scalar Function做支持。。。。。。

      但是也有相应的workaround,因为EF提供了DbFunction类,可以让我们直接在DbContext里写一个cutsom method,然后映射到SSDL里的一段自动生成的XML代码,这段代码是有EF model自动生成的,一个完整的例子:

    Scalar Function:

      

    CREATE FUNCTION [dbo].[Function20150410]
    (
    	@param1 int,
    	@param2 int
    )
    RETURNS INT
    AS
    BEGIN
    	RETURN @param1 + @param2
    END
    

    XML 代码:

    <Function Name="Function20150410" Aggregate="false" BuiltIn="false" NiladicFunction="false" IsComposable="true" ParameterTypeSemantics="AllowImplicitConversion" Schema="dbo" ReturnType="int">
              <Parameter Name="param1" Type="int" Mode="In" />
              <Parameter Name="param2" Type="int" Mode="In" />
            </Function>
    

    Custom Method in DbContext Class:

    [DbFunction("DFDBModel.Store", "Function20150410")]
            public ObjectResult<int> GetContentByIdAndCul(int id, int culture)
            {
                var objectContext = ((IObjectContextAdapter)this).ObjectContext;
    
                var parameters = new List<ObjectParameter>();
                parameters.Add(new ObjectParameter("Id", id));
                parameters.Add(new ObjectParameter("Culture", culture));
    
                return objectContext.CreateQuery<int>("DFDBModel.Store.Function20150410(@Id, @Culture)", parameters.ToArray()).Execute(MergeOption.NoTracking);
            }
    

     Call this method:

    using (DFDBEntities db=new DFDBEntities())
                {
                    var result = db.GetContentByIdAndCul(1, 1).FirstOrDefault();
                }
    

      

  • 相关阅读:
    相机篇
    ValueAnimator动画跳过中间过程的问题
    android 双向文字问题
    android让xml布局的底部跟随软键盘
    给fragment设置进入和退出动画
    android布局控件的LayoutParams
    注意点
    关于与条件判断中的顺序
    栈的反转
    从尾到头打印链表
  • 原文地址:https://www.cnblogs.com/fred-bao/p/4415510.html
Copyright © 2011-2022 走看看