1

データベースを表すLINQtoSQLファイルを作成しました。データベース内のテーブル名は、次のようにフォーマットされています。

[prefix]_tableName

そして、designer.csファイルのTableAttributeを次の場所から変更しようとしたときに、プレフィックスを動的にしたい。

[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.isftblprfx_config")]

に:

[global::System.Data.Linq.Mapping.TableAttribute(Name=String.Format("dbo.{0}_{1}", Server.TablesPrefix, "config")]

ビルド時間エラーが発生しました:

属性の引数は、定数式、typeof式、または属性パラメータータイプの配列作成式である必要があります。

解決策はありますか?前もって感謝します

4

2 に答える 2

1

例外はそれをすべて言います。

コードのコンパイル時に属性がメタデータに出力されるため、その引数はコンパイル時に決定する必要があり、実行時に変更することはできません。Server.TablesPrefixしたがって、あなたは定数または読み取り専用の文字列ではないことを期待しています。

異なるデータベースでコンテキストを再利用したい場合は、同一のスキーマを持つ必要があります。スキーマを変更できない場合は、おそらく t4 テンプレートが解決策を提供します。

于 2012-06-23T09:40:40.287 に答える
0
[global::System.Data.Linq.Mapping.TableAttribute(Name=String.Fromat("dbo.{0}_{1}", Server.TablesPerfix, "config")]

読む必要があります

[global::System.Data.Linq.Mapping.TableAttribute(Name=String.Format("dbo.{0}_{1}", Server.TablesPrefix, "config")]

タイプミスは常に最悪の敵です:)

于 2012-06-22T11:52:37.490 に答える