私は WebSecurity.InitializeDatabaseConnection('with parameters...') を使用しており、いくつかのプロパティを持つユーザー オブジェクトもあります。ローカル マシンでプログラムを実行すると、ユーザー テーブルが、すべてのメンバーシップ テーブルを作成するときに Web セキュリティが自動作成しようとするユーザー テーブルとマージされるように見えます。そこで問題はありませんが、自分のサイトを azure の Web サイトにデプロイしようとしてもうまくいきません。websecurity は、ID、UserName などを使用して独自の User テーブルを作成し、他のユーザー テーブルの名前を「s」を使用して「users」テーブルに変更したようです。なぜこれが起こっているのですか?それは私だけですか、それとも他の人がAzureで多くのdb展開の問題に遭遇しますか? それは決してうまくいかず、非常にイライラします。ただし、正常に動作するか、私のローカルマシンです。
ユーザー オブジェクト:
[Table("User")]
public class User : IAuditable, IIdentifiable
{
public User()
{
IsActive = true;
IsDeleted = false;
Friends = new List<Friends>();
SharedFeeds = new List<SharedFeed>();
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
public string State { get; set; }
public int ZIPCode { get; set; }
public string UsersTheme { get; set; }
public Boolean IsActive { get; set; }
public Boolean IsDeleted { get; set; }
public virtual List<Friends> Friends { get; set; }
public virtual List<SharedFeed> SharedFeeds { get; set; }
}
私の InitializeSimpleMembershipAttribute.cs で:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Ensure ASP.NET Simple Membership is initialized only once per app start
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
Database.SetInitializer<DataContext>(null);
try
{
using (var context = new DataContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "User", "UserId", "UserName", autoCreateTables: true);
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
}
}
}
これは私に紺碧の問題を与えているようです:
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "User", "UserId", "UserName", autoCreateTables: true);
Web セキュリティを使用する必要がありますが、ユーザーに追加のプロパティを追加することもできます