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

      

  • 相关阅读:
    团队计划
    python数据处理学习
    ShellExecute函数
    WinAPI WinMain函数
    I2C相关知识学习
    JavaScript多元运算符
    彻底理解js中的&&和||
    彻底理解线程同步与同步代码块synchronized
    JVM内存区域划分Eden Space、Survivor Space、Tenured Gen,Perm Gen解释
    JS参数使用带参数的方法
  • 原文地址:https://www.cnblogs.com/fred-bao/p/4415510.html
Copyright © 2011-2022 走看看