![](/img/trans.png)
[英]Why am I getting a FileNotFOund Exception in my ASP.NET Core 7 MVC while upload handling?
[英]FileNotFound exception while trying to create ASP.NET MVC 4 controller
我正在嘗試遵循Contoso大學教程 ,僅使用SQL Server 2008而不是CE。 我可以使用我的PC名稱和Windows身份驗證連接到SQL Server Management Studio中的數據庫引擎。 我沒有用它創建數據庫,因為我正在嘗試使用EF Code First。
這是我的連接字符串:
<add
name="SchoolContext"
connectionString="Data Source=CARSON-PC\CARSON;Integrated Security=true"
providerName="System.Data.SqlClient"/>
我嘗試通過右鍵單擊controllers文件夾並選擇Add->Controller...
並根據教程設置生成的對話框來添加控制器。 我結束了一個對話框,告訴我拋出了FileNotFoundException
,該文件是一個臨時的dll:
這個對話框被拋出五次(我假設每個生成的模板文件一次),我最終得到一個控制器,但沒有生成模板。
我懷疑它與我的連接字符串或我的SQL服務器安裝有關,因為我已經堅持了一段時間,在此階段遇到各種錯誤,因為我嘗試獲得正確的連接字符串。
為了完整性,這是我正在嘗試生成控制器的模型:
public class Student {
public int StudentID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
背景情況:
public class SchoolContext : DbContext {
public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
protected override void OnModelCreating(modelBuilder As DbModelBuilder) {
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
我的連接字符串錯了嗎? 這是服務器未正確配置的症狀嗎? 我搞砸了什么?
事實證明,這是在MVC模板文件List.tt,Edit.tt,Details.tt等有不明確的引用一個簡單的錯誤ColumnAttribute
。
我打開C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\ItemTemplates\\CSharp\\Web\\MVC 4\\CodeTemplates\\AddView\\CSHTML
,並瀏覽每個.tt
文件並搜索“ColumnAttribute” (開頭的空格):
//...
var column = attribute as ColumnAttribute;
if (column != null && column.IsPrimaryKey) { // LINQ to SQL
return true;
}
//...
我將第一行更改為:
var column = attribute as System.Data.Linq.Mapping.ColumnAttribute;
我認為只有Empty.tt沒有它。 我為VB模板做了同樣的事情。 現在控制器創建得很好。
我剛剛使用ASP.NET MVC 4,SQL SERVER 2008 Express對此進行了測試。 每件事都有效。 您需要在連接字符串中提供數據庫名稱,如果您在global.asax中有此類型代碼,則EF使用該字符串自動創建具有此名稱的數據庫,
System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<SchoolContext>());
這是我的連接字符串,
<add name="SchoolContext" connectionString="Data Source=.\SQlEXPRESS;Initial Catalog=SchoolDatabase;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" />
確保,
使用前構建應用程序。
嘗試以管理員身份運行該應用程序。
您最初不需要創建SchoolContext,向導會自動為您創建一個。
查找連接字符串的一種簡單方法是使用服務器資源管理器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.