Linq To SQL クラスを定期的に更新する必要があります。はい、データスキーマについて十分に考えていないことを恥じてください。悪い開発者、うんざりです。SQLMetal でほぼ問題なく動作することがわかりましたが、パラメーター リストに何かが欠けている可能性があります。
Visual Studio 外部ツールを使用して光沢のある新しいツールバー ボタンからバッチ ファイルを実行すると、
@echo off
del c:\path\to\LinqToSql.dbml
SQLMetal.exe /server:SERVER\SQLSERVER /database:db /timeout:0 /dbml:"c:\path\to\LinqToSql.dbml" /namespace:DAL /context:DataDataContext /entitybase:System.Data.Linq.DataContext /language:csharp /pluralize
SqlMetal は .dbml ファイルを生成します。ただし、質問1.dbml ファイルをプログラムでプロジェクトに含めることはできますか?
質問2
新しく生成された .dbml ファイルを手動でインクルードした後にコンパイルすると、各クラスで、パラメーターなしのコンストラクターの行番号に関連する次のビルド エラーが発生するのはなぜですか? たとえば、30 個のテーブル = 30 個のビルド エラー。
'System.Data.Linq.DataContext' does not contain a constructor that takes 0 arguments
実際の
DataDataContext
生成されたクラスにパラメーターなしのコンストラクターがないことに気付いたので、部分クラスを追加して補足しましたが、それでもうまくいきません。
public partial class DataDataContext
{
public DataDataContext() :
base(global::DAL.Properties.Settings.Default.MyConnectionString, mappingSource)
{
OnCreated();
}
}
この更新プロセスは自動化できると思っていましたが、これらのコンストラクター エラーを生成する生成された .dbml ファイルを手動で追加してもうまくいきません。