2012-04-24 114 views
0

爲了避免有兩個數據庫,我已將自己的實體映射到ASPNETDB.MDF,這是自動爲成員資格生成的。我在這篇文章下面以圖我的實體,以現有的數據庫:http://weblogs.asp.net/scottgu/archive/2010/08/03/using-ef-code-first-with-an-existing-database.aspx 據我瞭解所有我需要做的改變是DATABSE的上下文類這樣的名稱:將實體映射到ASPNETDB.MDF MVC3

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.Entity; 
using UniversityApp.Models; 
using System.Data.Entity.ModelConfiguration.Conventions; 


namespace UniversityApp.DAL 
{ 
     public class ASPNETDB : DbContext 
     { 
      public DbSet<User> Users { get; set; } 
      public DbSet<Review> Reviews { get; set; } 
      public DbSet<Movie> Movies { get; set; } 

     protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 
      modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     } 

    } 
} 

我也有改變了連接字符串是這樣的:

<connectionStrings> 
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"  providerName="System.Data.SqlClient" /> 
<add name="MovieContext" connectionString="Data Source=|DataDirectory|aspnetdb.mdf"  providerName="System.Data.SqlServerCe.4.0"/> 
</connectionStrings> 

一切似乎做工精細(方法舊數據庫,讀取和寫入的DATABSE,甚至初始化數據)。但是,當我打開ASPNETDB.mdf的連接時,我沒有看到我的表。我究竟做錯了什麼?

+0

爲什麼你需要一些其他數據庫或aspnetdb.mdf中的成員表?您可以將ASP.NET成員資格/角色/配置文件添加到任何現有數據庫。只需用reg_sql.exe指定-d標誌 – mfanto 2012-04-24 19:07:04

回答

0

我想你會碰到更多的問題,因此一般來說這可能不是最好的方法。這就是說,爲了回答你的實際問題,DbContext正在尋找一個與你的上下文同名的連接字符串。也就是說,它正在尋找一個名爲「ASPNETDB」的連接字符串。由於您的連接字符串被命名爲「ApplicationServices」和「MovieContext」DbContext沒有找到其中之一。

要使DbContext使用特定的連接字符串,只需將該連接字符串傳遞給DbContext構造函數即可。例如:

public class ASPNETDB : DbContext 
{ 
    public ASPNETDB() 
    : base("name=ApplicationServices") 
    { 
    } 
    ... 
} 

一旦你得到這個工作,你可能想看看使用遷移來創建一個已經存在的數據庫表。

+0

是否有任何需要修改我的連接字符串? – Anajrob 2012-04-25 14:36:47

+0

不可能與給定的信息說。第二個似乎是指定一個mdf文件,但使用SQL Compact,它可能是錯誤的或者非常容易誤導,但是我不太瞭解你實際做了什麼以真正有意義的評論。 – 2012-04-25 16:49:28