基本上,我遇到的问题与详细的here相同,但在SubSonic 3.0中。不幸的是,我不知道如何在SubSonic 3.0中更改提供程序。
这是我需要在MySQL.ttinclude,Settings.ttinclude还是T4模板之一中进行更改吗?还是它进入某个地方的配置?
有什么想法?建议?
我发现this说它是按设计的。我无法想象为什么。我更改了Classes.tt文件以生成单个映射。相关代码如下。但是,这取决于我所有的PK都被命名为Id的事实,但是您应该能够理解这一点。
在IQueryable <>生成部分之前:
if (fk.ThisColumn == "Id")
{
//This is where the standard IQueryable goes
} else {
//This is what I added
public <#= fk.OtherTable #> <#= fk.OtherTable #>
{
get
{
var db=new <#=Namespace #>.<#=DatabaseName#>DB();
return from items in db.<#=fk.OtherQueryable #>
where items.<#=fk.OtherColumn#> == _<#=fk.ThisColumn#>
select items;
}
}
}
希望有帮助。我现在想弄清楚现在要做很多表:/
我正在使用Subsonic 2.2,但我遇到了同样的问题,但这可以解决我的问题:除了原始提供程序MySqlDataProvider
,还有扩展版本:MySqlInnoDBDataProvider
因此在您的web.config中,请确保提供者是选择的:
<add name="MyProvider"
type="SubSonic.MySqlInnoDBDataProvider, SubSonic"
connectionStringName="WriteConnectionString"
generatedNamespace="AttendAnywhere.Data"
generateLazyLoads="true"
extractClassNameFromSPName="true" />