基本上,我遇到与详细here相同的问题,但在SubSonic 3.0中。不幸的是,我无法弄清楚如何更改SubSonic 3.0中的提供程序。
这是我需要在MySQL.ttinclude,Settings.ttinclude还是其中一个T4模板中更改的内容?或者它在某处配置?
思考?建议?
答案 0 :(得分:0)
我发现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;
}
}
}
希望这会有所帮助。我现在想弄清楚现在做多对多的表:/
答案 1 :(得分:0)
我正在使用Subsonic 2.2,但遇到了同样的问题,但这可以解决我的问题:除了原始提供程序MySqlDataProvider
之外,还有扩展版本:MySqlInnoDBDataProvider
因此,在您的web.config中,确保提供者是选择的:
<add name="MyProvider"
type="SubSonic.MySqlInnoDBDataProvider, SubSonic"
connectionStringName="WriteConnectionString"
generatedNamespace="AttendAnywhere.Data"
generateLazyLoads="true"
extractClassNameFromSPName="true" />