我有一个项目,我正在使用LINQ to SQL。在SQL Server内部,我定义了一个名为[MyObjectEnabled]
的自定义存储过程,该过程返回where子句后面的对象:
SELECT *
FROM MyObject
WHERE MyDate IS NOT NULL
但是当我将存储过程导入DataContext
时,结果对象的类型为MyObjectEnabledResult
,而不是MyObject
。
我需要转到DataContext.cs
并手动编辑返回类型。但每次我在此DataContext
上导入存储过程时,之前的修改都将被删除。
那么:我如何告诉SQL Server获取返回的类型呢?我希望这个问题很清楚。
答案 0 :(得分:0)
LINQ to SQL创建的类是部分的;因此,您可以创建单独的代码文件,如MyObjectEnabledResult.cs
,并在此代码文件中MyObjectEnabledResult
继承共享接口,然后只使用共享接口。您可以对MyObject
的LINQ to SQL查询执行相同的操作。
// auto-generated by LINQ
public partial class MyObjectEnabledResult
{
public int ID { get; set; }
}
// auto-generated by LINQ
public partial class MyObject
{
public int ID { get; set; }
}
// your own code behind - ISharedInterface.cs
public interface ISharedInterface
{
int ID { get; set; }
}
// your own code behind - MyObjectEnabledResult.cs
public partial class MyObjectEnabledResult : ISharedInterface
{
}
// your own code behind - MyObject.cs
public partial class MyObject : ISharedInterface
{
}
// get the db context
var query1 = db.MyObjectEnabled().Cast<ISharedInterface>();
var query2 = from mo in db.MyObjects select (ISharedInterface)mo;