我有两个数据访问类库,A.csproj和B.csproj。每个都有一个edmx。这两个edmx包含来自两个不同数据库的实体。 A.csproj引用B.DLL。 A.csproj中的A类使用LINQ查询A.edmx中的实体以返回IEnumerable< dtoResultA>。 B.csproj中的B类到B.edmx也返回IEnumerable< dtoResultB>。
我应该怎么做才能直接调用B.csproj中定义的getUserBenefitDetail()作为classA.getUserStuff()的LINQ查询的一部分?
public class dtoResultA{
int userID {get;set;}
IEnumerable<userPermissions> permissions{get;set;}
IEnumerable<dtoResultB> benefits{get;set;}
}
public class A{
public IEnumerable<dtoResultA> getUserStuff(int UserId){
var result = from p in contextA.userPermission.Where(x=>x.userId = UserId)
let b = getUserBenefitDetail(UserId) /*<--not sure how */
select new dtoResultA{
userID = c.userId,
permissions = p,
benefits = b
}
}
}
public class B{
public IEnumerable<dtoResultB> getUserBenefitDetail(int UserId){
var result = from b in contextB.benefits.Where(x=>x.userId = UserId)
select new dtoResultB{
userID = c.userId,
benefits = b,
beneficiaries = b.beneficiaries
}
}
}
答案 0 :(得分:0)
最直接的方式是:
public class A{
public IEnumerable<dtoResultA> getUserStuff(int UserId){
var result = from p in contextA.userPermission.Where(x=>x.userId = UserId)
select new dtoResultA{
userID = c.userId,
permissions = p,
benefits = getUserBenefitDetail(UserId)
}
}
}
答案 1 :(得分:0)
这不是问题,因为你有2个项目。这是一个问题,因为您已经使用方法定义了一个B类,但是您没有B的实例,并且您需要一个实例来调用方法。
您可以选择创建B的实例,或者使您的方法保持静态。可以在没有实例的情况下调用静态方法,它不再是一个方法,它更像是一个函数。
使用实例:
public class A
{
public IEnumerable<dtoResultA> getUserStuff(int UserId)
{
var bInstance = new B();
var result = from p in contextA.userPermission.Where(x=>x.userId = UserId)
let b = bInstance.getUserBenefitDetail(UserId)
select new dtoResultA
{
userID = c.userId,
permissions = p,
benefits = b
}
}
}
使用静态类:
public class B
{
public static IEnumerable<dtoResultB> getUserBenefitDetail(int UserId)
{
return stuff.....
}
}
public class A
{
public IEnumerable<dtoResultA> getUserStuff(int UserId)
{
var result = from p in contextA.userPermission.Where(x=>x.userId = UserId)
let b = B.getUserBenefitDetail(UserId)
select new dtoResultA
{
userID = c.userId,
permissions = p,
benefits = b
}
}
}
这取决于你,有意义的东西,以及从目标观点来看没有意义的东西。