Linq to sql LINQ到SQl,自引用扩展类

Linq to sql LINQ到SQl,自引用扩展类,linq-to-sql,Linq To Sql,我有一个定义文本值和ID的“Literal”类。我想在Literal类(LINQ to SQL)中构建一个简单的“FromValue(string)”静态方法,这样它就可以从给定的值返回正确的Literal实例 不过,我在想怎么做时遇到了一些麻烦。我的意思是,每当我需要它时,我都可以在代码中调用它,但是将它包装到类本身中会更加方便和节省时间 有什么想法吗 using System; using System.Linq; namespace Context { public partia

我有一个定义文本值和ID的“Literal”类。我想在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;
        }
    }
}
什么是“现有数据上下文”?在调用
FromValue
时,可能有多个数据上下文处于活动状态,例如:

using (FooDataContext ctx1 = new FooDataContext())
using (FooDataContext ctx2 = new FooDataContext())
{
    Literal.FromValue(...); // which one?
}
你必须把它作为参数传递,真的没有更好的方法了

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

好的,“FromLiteral”是我用来将它分配给它所附加的键的。像这样

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

其中“数据库”是datacontext的实例。我只是想看看有没有更好的办法。我想通过字符串值来分配它们,你看,我不知道ID是否正确。

如果他需要使用linq2sql查询中的FromLiteral(),他可以让它返回IQueryable。我同意他认为最好的方法是将DataContext作为一个输入参数,主要是为了使赋值更简单,而不是实际的查询。我可以很容易地按名称查询。只是尽量避免创建新对象,运行查询,然后每次需要将文本分配给某个对象时都分配它。我的意思是在
选择中使用
FromLiteral()
。无论发生什么情况,它都不会工作。不,这不是在选择过程中使用的。