1

[Property] や [Class] などの NHibernate マッピング属性によってエンティティが装飾されているプロジェクトに取り組んでいます。残念ながら、RIAServices はこれらの属性のほとんどをサポートしていないようで、RIAServices が Silverlight クライアント コードを生成しようとするとエラーが発生します。

[Class] または [Property] 属性で装飾されたエンティティを使用する DomainService を構築しようとすると、ArgumentNullException が発生し、次のエラー メッセージが表示されます。

エラー 2 「CreateRiaClientFilesTask」タスクが予期せず失敗しました。
System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。---> System.ArgumentNullException: 値を null にすることはできません。
パラメータ名: TypeName
System.RuntimeType.PrivateGetType (文字列 typeName、ブール型 throwOnError、ブール型 ignoreCase、ブール型 ReflectionOnly、StackCrawlMark & stackMark) で
System.Type.GetType (文字列 typeName) で
NHibernate.Mapping.Attributes.ClassAttribute.get_NameType() で
--- 内部例外スタック トレースの終了 ---
System.RuntimeMethodHandle._InvokeMethodFast (オブジェクト ターゲット、Object[] 引数、SignatureStruct& sig、MethodAttributes methodAttributes、RuntimeTypeHandle typeOwner) で
System.RuntimeMethodHandle.InvokeMethodFast (オブジェクト ターゲット、オブジェクト [] 引数、署名 sig、MethodAttributes methodAttributes、RuntimeTypeHandle typeOwner) で
System.Reflection.RuntimeMethodInfo.Invoke (オブジェクト obj、BindingFlags invokeAttr、バインダー バインダー、オブジェクト [] パラメーター、CultureInfo カルチャ、ブール値の skipVisibilityChecks) で
System.Reflection.RuntimeMethodInfo.Invoke (オブジェクト obj、BindingFlags invokeAttr、バインダー バインダー、オブジェクト [] パラメーター、CultureInfo カルチャ) で
System.Reflection.RuntimePropertyInfo.GetValue (オブジェクト obj、BindingFlags invokeAttr、バインダー バインダー、オブジェクト [] インデックス、CultureInfo カルチャ) で
System.Reflection.RuntimePropertyInfo.GetValue (オブジェクト obj、オブジェクト [] インデックス) で
System.Web.DomainServices.Tools.StandardCustomAttributeBuilder.GetPropertyValues (IEnumerable`1 propertyMaps、属性属性) で
System.Web.DomainServices.Tools.StandardCustomAttributeBuilder.GetAttributeDeclaration (属性属性) で
System.Web.DomainServices.Tools.CustomAttributeGenerator.GenerateCustomAttributes (ClientProxyGenerator proxyGenerator、CodeTypeDeclaration referencingType、IEnumerable`1 属性、CodeCommentStatementCollection コメント) で
System.Web.DomainServices.Tools.CustomAttributeGenerator.GenerateCustomAttributes (ClientProxyGenerator proxyGenerator、CodeTypeDeclaration referencingType、IEnumerable`1 属性、CodeAttributeDeclarationCollection outputCollection、CodeCommentStatementCollection コメント) で
System.Web.DomainServices.Tools.EntityProxyGenerator.Generate() で
System.Web.DomainServices.Tools.ClientProxyGenerator.GenerateProxyClass (文字列 & generatedCode) で
System.Web.DomainServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies() で
System.Web.DomainServices.Tools.CreateRiaClientFilesTask.Execute() で
Microsoft.Build.Framework.ITask.Execute() で
Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask (EngineProxy engineProxy、ItemBucket バケット、TaskExecutionMode howToExecuteTask、ITask タスク、ブール値 & taskResult) SL で

Fluent NHibernate を使用すると、NHibernate の依存関係が不要になるため、問題が解決するはずですが、Fluent NHibernate に移行する前に、他に解決策がないことを最初に確認したいと思います。この問題を解決するための考えはありますか?

4

3 に答える 3

0

Silverlight 用にコンパイルしたときに属性が失われるように、プリプロセッサ ディレクティブをエンティティに追加できます。

#if SILVERLIGHT
//nothing
#else
[class]
#endif
public class entity{
}
于 2009-10-30T03:35:25.693 に答える
0

同じ問題がありました。解決策: 属性を取り除き、マッピングには XML のみを使用します。

于 2010-01-06T05:55:03.970 に答える