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

      

  • 相关阅读:
    第3章 Activity的生命周期
    掌握jQuery插件开发,这篇文章就够了
    第22章 Master-Detail 用户界面
    JavaScript动画1-速度动画
    Compass学习指南
    Compass中导入Normalize
    Sass学习指南
    BASIC-2 01字串
    leetocode题解
    机器学习算法的sklearn实现
  • 原文地址:https://www.cnblogs.com/fred-bao/p/4415510.html
Copyright © 2011-2022 走看看