我想從ASP.NET MVC項目中首先使用SQL Server CE 4的EF代碼,但不是在App_Data
文件夾中創建數據庫,而是在我的工作站上安裝的SQL Server Express實例中獲得新數據庫。安裝SQL Server Express時,如何強制實體框架代碼優先使用SQL Server CE?
如何獲得在App_Data
文件夾中創建的數據庫?
web.config
:
<connectionStrings>
<add name="NerdDinners" connectionString="Data Source=|DataDirectory|NerdDinners.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
Context
類:
public class NerdDinners : DbContext
{
public DbSet<Dinner> Dinners { get; set; }
public DbSet<RSVP> RSVPs { get; set; }
}
編輯1
我想去阻止SQL Server Express的思維,可能迫使使用SQL Server CE的,但它導致了ProviderIncompatibleException
,內部例外爲
{"A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)"}
所以看來我的設置想要使用SQL Server Express。
編輯2 有人建議我在連接字符串名稱,明確傳遞到的DbContext,所以我改變了我的上下文類以下幾點:
public class NerdDinners : DbContext
{
public NerdDinners() : base("NerdDinners") { }
public DbSet<Dinner> Dinners { get; set; }
public DbSet<RSVP> RSVPs { get; set; }
}
在DinnersController控制器,這是上下文如何實例化:
public class DinnersController : Controller
{
private NerdDinners db = new NerdDinners();
//
// GET: /Dinners/
public ViewResult Index()
{
return View(db.Dinners.ToList());
}
做出這些更改後,數據庫仍在SQL Server Express中創建,因此看起來我的連接字符串被忽略。
你有它配置如上,並沒有得到sdf文件出現在斌/調試? – 2012-03-01 20:47:09
@Adam Tuliper - 這是正確的。我在本地SQL Server Express實例中獲得一個新的數據庫。 – DaveB 2012-03-01 20:51:34
沒有其他連接字符串?還是安裝了sqlce v 4? – 2012-03-01 20:53:27