2

2 つの異なるカタログから 2 つのテーブルを結合しようとしていますが、うまくいきません。

私は CatalogNameOVerwriteHashtable で何かをしなければならないことを知っていますが、どうやら私は何か間違ったことをしています。

ドキュメント リンク ( http://www.llblgen.com/documentation/2.6/using%20the%20generated%20code/Adapter/gencode_dataaccessadapter_adapter.htm ) は、私の課題を解決するのに十分な情報を提供しません。

次のような状況があります。

  • CatalogA と CatalogB の 2 つのカタログがあります。
  • CatalogA には Article テーブルがあり、CatalogB には StockCount テーブルがあります。

手動リレーションを作成しました。ここまでは順調ですね。

私の推測では、次のアクションがあります。

  • 新しい CatalogNameOverwriteHashtable インスタンスを作成します。 var foo = new CatalogNameOverwriteHashtable();
  • foo.Add("StockCount", "CatalogA");
  • foo.Add("記事", "CatalogB");
  • アダプタに割り当てます: adapter.CatalogNameOverwrites = foo;

次のクエリになります。

SELECT 
[dbo].[StockCount].[ArticleId], 
[dbo].[Article].[Description], 
[dbo].[StockCount].[ShopId], 
[dbo].[StockCount].[LastMutationDateTime]
FROM ( [dbo].[StockCount] INNER JOIN 
[dbo].[Article] ON [dbo].[StockCount].[ArticleId]=[dbo].[Article].[ArticleId])

クエリにカタログ名がないため、明らかに何か間違っています。問題は、何ですか?

4

1 に答える 1

1

最終的に、ソリューションは非常にシンプルであり、LLBLGen が非常に強力で使いやすい理由を証明しています。

初めに。エンティティを生成すると、カタログ名が FieldInfoProviders に保存されます。これは、次の命令で取得できます。

var catalogName = ORMapper.Utils.DatabasePersistenceInfo.GetFieldPersistenceInfo(ArticleFields.PKey).SourceCatalogName;

このカタログ名は、エンティティの生成に使用したカタログです。これはおそらく開発データベースです。

次に行うことは、開発カタログ名を製品カタログ名にマップすることです。そのようです:

adapter = new DataAccessAdapter("Your connection string");
adapter.CatalogNameOverwrites =new CatalogNameOverwriteHashtable();
adapter.CatalogNameOverwrites.Add(catalogName, "ProductionCatalogName");
于 2013-10-18T08:07:59.100 に答える