如何在使用存储过程时指定对象类型?

时间:2015-07-13 14:20:18

标签: sql-server linq object stored-procedures types

我有一个项目,我正在使用LINQ to SQL。在SQL Server内部,我定义了一个名为[MyObjectEnabled]的自定义存储过程,该过程返回where子句后面的对象:

SELECT * 
FROM MyObject 
WHERE MyDate IS NOT NULL

但是当我将存储过程导入DataContext时,结果对象的类型为MyObjectEnabledResult,而不是MyObject

我需要转到DataContext.cs并手动编辑返回类型。但每次我在此DataContext上导入存储过程时,之前的修改都将被删除。

那么:我如何告诉SQL Server获取返回的类型呢?我希望这个问题很清楚。

1 个答案:

答案 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;