开发者

How to use a c# method in a sql stored procedure

I wanted to use linq as so:

MyDBEntities context = new MyDBEntities();
context.MyTable.Where(i => MyMethod(i.column, valueToTest).ToList();

with

public bool MyMethod(Object a, Obj开发者_StackOverflow社区ect b)

but apparently using such a method with isn't possible

so I was hopping I could use the methode in a stored procedure I would be able to call with linq

do you think is it possible ?


Generally it is possible to create C# function and use it in SQL Server (2005 and newer) but it is not so simple - you must use SQL CLR which means separate project for your function, special references, special types, etc. At last you must deploy the assembly to SQL server to be able to use the function in SQL. General documentation also covering how to create custom function:

Creating SQL Server Objects in Managed Code

Once you have your function on SQL server you can use it within stored procedure and you can use it within query. I'm actually not sure if you can import these functions into Linq-to-sql or EF model and use them in Linq-to-sql or Linq-to-entities queries.


Take a look here for a complete sample:

Calling custom methods in LINQ-to-SQL


I hope I understand you correctly.

Let's say that MyTable is a database table that contains the columns Name, and Address Here's how you would get a value back whether the results contain the specified value you passed.

public void SomeMethod()
    {
        MyTable table= new MyTable();

        bool b=  MyMethod(table.Name, "Fred");
       if(b)
         //Do something
       else
         //Do something else
    }

    public bool MyMethod(MyTable a, object value)
    {
        using(var context= new MyDBEntities())
        {
            return context.MyTable.Where(i => a == value).Any();
        }
    }

This is what the database table 'MyTable' looks like behind the scenes.(the data context generated this)

public class MyTable
{
    public string Name { get; set; }
    public string Address { get; set; }
}

So you can see in the first method I pass table.Name to MyMethod, that's only possible because MyTable has a pubic property called Name. Also notice that we are using type Object for the value, as the parameter could an int, a string, a date time, who knows.

Note: This is untested code, but should get off to right track if I understand you correctly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜