1

以下は、コンパイル済みの linq クエリでの最初の試みに使用しようとしているコードです。コードは正常にビルドされ、サイトは期待どおりに実行されますが、プログラムがコンパイルされたメソッドを呼び出すと、次のエラーが表示されます。The type 'Monet.Models.ZipCodeTerritory' is not mapped as a Table.

この特定の問題について話すネット上には何も見つからないようです。ZipCodeTerritoryテーブルをDataContextオブジェクトにマップするために何をする必要があるか教えてもらえますか? 私は Entity Framework をZipCodeTerritory使用しており、このページで使用されているモデルです。

パラメータ/コンストラクタ

private static Func<DataContext, ZipCodeTerritory, List<ZipCodeTerritory>> SearchEffectiveDate;
private static DataContext _dbContext;
public ZipCodeValidatorCompiled()
{
    _dbContext = new DataContext(ConfigurationManager.AppSettings.Get("db"));
    SearchEffectiveDate = CompiledQuery.Compile((DataContext db, ZipCodeTerritory zipCode)
    =>
    from z in db.GetTable<ZipCodeTerritory>()
    where z.DrmTerrDesc.Equals(zipCode.DrmTerrDesc) &&
            z.IndDistrnId.Equals(zipCode.IndDistrnId) &&
            z.StateCode.Equals(zipCode.StateCode) &&
            (z.ZipCode.Equals(null) ? z.ZipCode.Equals(null) : z.ZipCode.Equals(zipCode.ZipCode))
    select z
    );
}

コンパイルされたメソッド呼び出し

List<ZipCodeTerritory> terrList = SearchEffectiveDate(_dbContext, zipCode); //Error thrown here

編集

パラメーターとコンストラクターを次のように更新しました。現在、テーブルのインスタンスをZipCodeTerritory独自に作成し、それをプリコンパイル済みクエリで使用しようとしています。ただし、コンストラクターの次の行にまったく同じメッセージが表示されます。ZipCode = _dbContext.GetTable<ZipCodeTerritory>();

パラメータ/コンストラクタ

private static DataContext _dbContext;
private static Table<ZipCodeTerritory> ZipCode; //New

public ZipCodeValidatorCompiled()
{
    _dbContext = new DataContext(ConfigurationManager.AppSettings.Get("db"));
    ZipCode = _dbContext.GetTable<ZipCodeTerritory>(); //New

    SearchEffectiveDate = CompiledQuery.Compile((DataContext db, ZipCodeTerritory zipCode)
    =>
    (from z in ZipCode //New
    where z.DrmTerrDesc.Equals(zipCode.DrmTerrDesc) &&
            z.IndDistrnId.Equals(zipCode.IndDistrnId) &&
            z.StateCode.Equals(zipCode.StateCode) &&
            (z.ZipCode.Equals(null) ? z.ZipCode.Equals(null) : z.ZipCode.Equals(zipCode.ZipCode))
    select z).ToList()
    );
}
4

0 に答える 0