0

Migrations.csでContentTypeが定義されているとしましょう

public int Create(){
ContentDefinitionManager.AlterTypeDefinition("UserWrapper", builder => 
builder
.WithPart(typeof(UserPart).Name)
.WithPart(typeof(CommonPart).Name)
.Creatable();
return 1;
}

次に、たとえば人が「サインアップ」した後にコントローラーから呼び出されるサービスがあります(ユーザーサインアップページなど)。このメソッド「CreateUserWrapper」はContentManagerを使用して新しいUserWrapperを作成します(コードは以下にあります)。

public void CreateUserWrapper(string email){
var userWrapper = orchardServices.ContentManager.New("UserWrapper");
var userPart = userWrapper.As<UserPart>();
userPart.Email = email;
userPart.UserName = email;
userPart.NormalizedUserName = email.ToLowerInvariant();
userPart.Record.HashAlgorithm = "SHA1";
userPart.Record.RegistrationStatus = UserStatus.Approved;
userPart.Record.EmailStatus = UserStatus.Approved;

orchardServices.ContentManager.Create(userWrapper);

}

上記のコードは、新しいユーザーを追加しません。管理ダッシュボードの「ユーザー」セクションに移動すると、新しいユーザーはありません。また、UserWrapperの新しいcontentTypeが追加されていません。どこが間違っているのですか、なぜこのコードはNHibernateにコールバックしてDbを更新しないのですか?

ありがとう!

4

1 に答える 1

0

さて、上記のコードは機能します。これが取り引きです。VS2010にバグがあると実際に感じたので、SP1を再インストールし、まったく同じコードを再度実行した後、動作しました。上記の方法で ContentManager.Create から ContentTypes を完全に更新できます。

于 2012-06-19T20:52:30.670 に答える