1

このウェブサイトを確認しましたが、解決策が見つかりませんでした。私はmvc4でウェブサイトを作りました。カスタムデータエンティティを作成しました。ただし、そのアプリケーションはローカルホストでは正常に機能しますが、リモートサーバーでは使用できません。

ここに私の構成web.config接続文字列

<add name="DefaultConnection" connectionString="Data Source=ipaddress;Initial Catalog=DataContext;User ID=user;Password=pass" providerName="System.Data.SqlClient" />

これが私のDataContextです。これにより、ローカルSQLサーバーに新しいデータベースが作成されます。この設定でリモートサーバーを使用するにはどうすればよいですか?

public class DataContext : DbContext
{
    public DbSet<Sayfalar> sayfa { get; set; }
    public DbSet<Uyeler> uye { get; set; }
    public DbSet<Roller> rol { get; set; }
    public DbSet<Loglar> log { get; set; }
    public DbSet<Resimler> resim { get; set; }
}

class dbYenile : DropCreateDatabaseIfModelChanges<DataContext>
{
    protected override void Seed(DataContext context)
    {
        MembershipCreateStatus Durum = new MembershipCreateStatus();
        Membership.CreateUser("demo", "123456", "demo@demo.com", "soru", "cevap", true, out Durum);
        Durum = new MembershipCreateStatus();
        Membership.CreateUser("demo1", "123456", "demo1@demo.com", "soru", "cevap", true, out Durum);
        Roles.CreateRole("Yonetici");
        Roles.AddUsersToRoles(new string[] { "demo" }, new string[] { "Yonetici" });
        //Console.WriteLine(Hatalar.uyelikHatalari(Durum));
    }
}

そしてここでGlobal.asax.csのapplication_startvoid。

Database.SetInitializer<DataContext>(new dbYenile());
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);

        BundleTable.Bundles.RegisterTemplateBundles();
4

1 に答える 1

3

EFは、デフォルトでDbContextから派生したクラスと同じ名前のデータベース接続を使用します。つまり、上記の接続には、「DefaultConnection」ではなく「DataContext」という名前を付ける必要があります。接続名を保持したい場合は、これをDataContextクラスに追加できます。


public DataContext: base("DefaultConnection") {}

それ以外の場合は、web.configの接続文字列の名前を「DataContext」に変更します

于 2012-05-10T03:59:02.957 に答える