如何在Subsonic中创建一对一的关系?例如,我有一个名为Readings的表,每个Reading只有一本书,但是Subsonic会返回IQueryable
本书。我希望它只返回一本书。感谢。
答案 0 :(得分:1)
我假设您正在使用ActiveRecord模板生成代码。
在ActiveRecord.tt中,你会看到一个如下所示的部分:
public IQueryable<<#=fk.OtherClass #>> <#=propName #>
{
get
{
var repo=<#=Namespace #>.<#=fk.OtherClass#>.GetRepo();
return from items in repo.GetAll()
where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#>
select items;
}
}
这是为表上的每个外键生成的代码的模板。您将需要修改此部分,并且可能围绕此代码添加一些逻辑,并为您的一对一密钥生成不同的内容。
希望指出你正确的方向。
答案 1 :(得分:1)
我所做的是创建一个像这样的部分类:
public partial class Reading
{
private Book _book;
public Book Book
{
get
{
if (_book == null)
_book = this.Books.SingleOrDefault();
{
return _book;
}
}
set
{
_book = value;
}
}
}
然后您可以直接访问Reading的子对象Book,而不是通过Iqueryable对象。
如果有人知道有更好的方法可以做到这一点,请告诉我,因为在经过多次努力之后我才能想到这一切。
编辑:忘记提及此部分类必须与生成的Subsonic模型位于同一名称空间