在我的EF4项目中,我已经打开了DataContext文件本身以及DataContext生成的一些表/对象的部分类。但是,如果我将“Products”类作为部分类打开,则似乎没有直接从产品返回到生成它的DataContext类的链接。
public partial class Product
{
public DataContext GetContext()
{
return this.DataContext;
// FAILS!!! No connection from 'this' to DataContext
// makes sense because "Product" isn't REALLY derived from DataContext
//...but still, I want this to work!
}
}
但在部分类中,我希望能够直接查询数据库,并且我真的想初始化一个DataContext实例并将其用于我的aspx.cs页面查询以及从aspx.cs页面调用的部分类的查询。
因此,到目前为止,我的解决方案是将DataContext实例作为“ref”参数传递给需要访问数据库的部分类方法。以下是部分类的示例:
public partial class Complaint
{
public IEnumerable<Person> GetPByRole(InvestigationRole roleEnum, ref DataContext dbase)
{
var role = dbase.GetRole(roleEnum);
return this.PeopleOnInvestigations
.Where(x => x.InvestigationRoleID == 1)
.Select(x => x.Person);
}
}
将我的DataContext对象作为ref参数传递给需要通过该连接访问数据库的任何部分类方法是否有缺点? 其中一个好处是,一旦将其作为ref传入,我可以从这些部分类中“AddObject()”新实体,并且一旦我的SaveChanges回调在asp.cs页面上被调用,所有更改(来自aspx和部分类方法)都会被执行。
DataContext
是 LINQ to SQL 类。您确定您正在使用 Entity Framework 吗? - Steven