Person オブジェクトを含むクラス ライブラリがあり、そこから継承する他の 2 つの型もあります。私は当初、これを使用して個人の aspnetdb プロパティを拡張していましたが、SimpleMembership セキュリティに遭遇し、それ以来それを機能させようとしています。
{
public abstract class Person
{
[Key]
public int Id { get; set; }
/// <summary>
/// eg. AB123
/// </summary>
public string Uid { get; set; }
public bool? IsRepresrentative { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[Display(Name = "Preferred First Name")]
public string FirstNamePreferred { get; set; }
[Display(Name = "Last Name")]
public string LastName { get; set; }
[Display(Name = "Full Name")]
public string FullName { get; set; }
public string Email { get; set; }
public string EmailAdditional { get; set; }
public string Telephone { get; set; }
[Display(Name = "Job Title")]
public string JobTitle { get; set; }
public string PersonalPage { get; set; }
public string ServiceArea { get; set; }
//Profile items
public int? PrefNewsItemsToShow { get; set; }
public override string ToString()
{
return FullName ??
string.Format("{0} {1}", string.IsNullOrEmpty(FirstNamePreferred) ? FirstName : FirstNamePreferred, LastName);
}
}
public class ProviderUser : Person
{
public ICollection<Provider> Providers { get; set; }
}
public class SchoolUser : Person
{
public ICollection<School> Schools { get; set; }
}
}
私は InitializeSimpleMembershipAttribute.cs に次のセットを持っています
WebSecurity.InitializeDatabaseConnection("MyCommonContext", "People", "Id", "Uid", autoCreateTables: true);
弁別器のあるテーブルにそれがない場合、これはうまくいくようです。しかし、他のデータも含むテーブルを使用できるように、上記がアイデアだと思いました。
私の質問を見るには2つの方法があります。1. AccountController からユーザーを作成しようとすると、上記のセットアップで次のようになります。
Cannot insert the value NULL into column 'Discriminator', table 'dbo.People'; column does not allow nulls. INSERT fails.
どうすれば解決できますか?
- または、別の見方をすると、どうすれば自分がやりたいことを別の/より良い方法で行うことができますか?