LINQ to SQl,自引用扩展类

时间:2009-09-09 18:08:48

标签: linq-to-sql

我有一个“Literal”类,用于定义文本值和ID。我想在Literal类(LINQ to SQL)中构建一个简单的“FromValue(string)”的静态方法,以便它从给定的值返回正确的Literal实例。

但是,我在弄清楚如何做到这一点时遇到了一些麻烦。我的意思是,我可以在每次需要时在代码中调用它,但是将它包装到类本身中会更加方便和节省时间。

有什么想法吗?

using System;
using System.Linq;

namespace Context
{
    public partial class Literal
    {
        public static Literal FromValue(string value)
        {
            // linq code, how do I reference the existing data context?
            return null;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

什么是“现有数据上下文”?在调用FromValue时,可能存在多个数据上下文,例如:

using (FooDataContext ctx1 = new FooDataContext())
using (FooDataContext ctx2 = new FooDataContext())
{
    Literal.FromValue(...); // which one?
}

你必须将它作为参数传递,实际上没有更好的方法。

另请注意,您将无法在LINQ2SQL查询中使用FromLiteral(因为查询解析器和翻译器不知道它的作用)。

答案 1 :(得分:0)

是的,好吧,我正在使用“FromLiteral”将它分配给它附加的Key。像这样......

unit.Ring.Keys.Add(new Key(Literal.FromValue("Name",database), item[0]));

其中'database'是datacontext的实例。我只是想看看是否有更好的方法来做到这一点。我想用字符串值来分配它们,你看,我不知道ID是否合适。