我有两个实体:
[TableName("is_userrole")]
public class UserRole
{
[MapField("id"), PrimaryKey, Identity,
public Guid id;
[NotNull]
public string Name;
}
[TableName("is_users")]
public class User
{
[MapField("id"), PrimaryKey, Identity,
NonUpdatable]
public Guid Id;
[NotNull]
public string Name;
[NotNull]
public string Login;
[NotNull]
public string Password;
public Guid UserRole_Id;
[Association(ThisKey = "UserRole_Id", OtherKey = "Id",
CanBeNull = false)]
public UserRole UserRole;
}
以及sql server上的存储过程,该存储过程从查询中获取数据
[从is_users u中选择u.,r.u.userrole_id=r.id]上的内部联接is_userrole r
如果我使用类似的linq查询
var query=来自数据库中的u。使用者选择新{u.Id,u.登录,u.密码,u.用户角色Id,u.用户角色};
关联填充,但如果我执行过程,则只填充父对象(即用户)
在bltoolkit.net中如何与存储过程建立关联?或者只能手动实现?
谢谢。
好的,所以我没有任何经验,但我很快查看了单元测试,看起来MapResultSet可以帮助你
单元测试位于->UnitTests\CS\MMapping\ResultSetTest.CS
AssosiationAttribute
仅用于Linq表达式。
需要注意的是:BLT不执行"隐藏"操作,例如,如果您将linq代码更改为:db.User.ToList()
,您将看到UserProperty未被填充。在您的示例中,填充之所以完成,是因为您在select子句中说过要这样做,而Association
仅用于在SQL中构建正确的"INNER JOIN"。