奇妙な問題があります。EFs独自のPOCOジェネレータを逆にして両方のテーブルをスキップ
(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)
{ }
}
<# } #>
}
これはすべてのテーブルを取得し、すべてのクラスを生成します。明らかにまだ完了していませんが、基本的には機能します。 DBが現在40以上のテーブルになっていて、私が完了する前に倍増する可能性があるので、不満を抱いています。私は、モデル、リポジトリなどを繰り返し作成したいと思います。これは重要なことですが、DBスキーマを取得することはできません。私がDALを作成するのが良い方法であり、テストは私が望むように動作しているからです。DBが私に何をしようとしているかを保証します。達成する。
どのようなアイデアですか?私のDBとDALがもはや困惑しなくなったら、私はGITのハブにそれらを押し込み、世界の遊び/参加を許可します。
先輩にありがとう...
J
このテーブルは、多対多のリンクテーブルのように見えます。 EFはナビゲーションプロパティに変換するため、モデルを生成しません(私は思っています)。 Showは 'Question'と' Questionange'の生成クラスをDbContextに設定しています。 –
あなたは正しいです!私はちょうど私が愚かな古い恐竜であったことを認識し、明らかな間違いを発見しました。今、私のTTファイルに含まれているものを除外するようにSQLを試してみると良いでしょう。プラス、もちろん、この質問を「ラメ」と書いています;-) –