有一个奇怪的问题。
考虑下表(来自SSMS 2014创建脚本的SQL,所以我没有拼写错误!)
CREATE TABLE [dbo].[QuestionRangeGroup](
[QuestionangeID] [int] NOT NULL,
[QuestionID] [int] NOT NULL,
CONSTRAINT [PK_QuestionRangeGroup] PRIMARY KEY CLUSTERED
(
[QuestionangeID] ASC,
[QuestionID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[QuestionRangeGroup] WITH CHECK ADD CONSTRAINT [FK_QuestionRangeGroup_Question] FOREIGN KEY([QuestionID])
REFERENCES [dbo].[Question] ([ID])
GO
ALTER TABLE [dbo].[QuestionRangeGroup] CHECK CONSTRAINT [FK_QuestionRangeGroup_Question]
GO
ALTER TABLE [dbo].[QuestionRangeGroup] WITH CHECK ADD CONSTRAINT [FK_QuestionRangeGroup_QuestionRange] FOREIGN KEY([QuestionangeID])
REFERENCES [dbo].[QuestionRange] ([ID])
GO
ALTER TABLE [dbo].[QuestionRangeGroup] CHECK CONSTRAINT [FK_QuestionRangeGroup_QuestionRange]
GO
EF反向POCO生成器和EF都拥有从数据库创建模型跳过此表,并且不为它生成模型类。还有一些非常相似的东西也失败了 我自己敲了一个非常简单的.tt来添加一堆相关的类(简单的存储库来利用生成的模型)看起来像这样。
<#@ template language="C#" debug="True" hostspecific="True" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Data" #>
<#@ assembly name="System.xml" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Data" #>
using OsipDal.EF;
using System.Data.Entity;
namespace OsipDal.Repositories
{
<#
string connectionString = @"data source=DESKTOP-5IHV7AT\SQLEXPRESS;initial catalog=Osip;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework";
SqlConnection con = new SqlConnection(connectionString);
con.Open();
DataTable schema = con.GetSchema("Tables");
foreach(DataRow row in schema.Rows)
{
var tableName = row["TABLE_NAME"].ToString();
var className = string.Format("{0}Repo", tableName.Trim());
#>
public partial class <#= className #>: RepositoryBase<<#= tableName.Trim() #>>
{
public <#= className #>(DbContext context) : base(context)
{ }
}
<# } #>
}
这将获取所有表并为所有表生成类。显然还没有完成,但基本上是有效的。 由于数据库目前处于40多个桌面并且在我完成之前可能翻倍,因此令人沮丧。我想在我去的时候迭代地创建模型,存储库等。这一点非常重要,因为我没有得到正确的数据库架构,直到我通过编写我的DAL并且我的测试表现得像我想要的那样好,这确保了数据库正在处理我所做的事情&# 39;我试图实现。
任何想法的家伙?如果有帮助的话,这将是开源的,一旦我的数据库和DAL不再令人尴尬,我会把它们推上GIT中心,让世界玩/加入。
先谢谢你们......
Ĵ
答案 0 :(得分:2)
我只是添加了这个答案,因为我在搜索其他内容时发现了这个问题,考虑将Reverse POCO Generator配置文件(Database.tt)中的此参数更改为false,如果您希望Reverse POCO生成多对多映射表:
UseMappingTables = true; // If true, mapping will be used and no mapping tables will be generated. If false, all tables will be generated.
希望它会帮助别人。
答案 1 :(得分:1)
我回到正轨: - )
Ĵ