2015-12-24 88 views
3

長期不斷的鬥爭之後,終於想出瞭如何使用MVC 6.這是怎麼一回事使用EF7數據庫第一種方法:實體框架7數據庫優先配置(MVC 6)

App.Impl - >項目。 JSON:

"frameworks": { 
    "net451": { }, 
    "dnx451": { } 
}, 
"dependencies": { 
    "EntityFramework.Commands": "7.0.0-rc1-final", 
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", 
    "EntityFramework.MicrosoftSqlServer.Design": "7.0.0-rc1-final" 
}, 

然後從CMD運行以下命令:

dnx ef dbcontext scaffold "Server=ip,port;Database=db;User Id=user;Password=pass;" EntityFramework.MicrosoftSqlServer 

3個問題我現在面臨這個問題。在我的Impl項目上。

  1. 我有一個文件夾專用於數據。我的數據文件夾應該包含所有數據庫相關的東西,如DbContext,DbClasses。但是,Scaffold在根目錄下創建這些文件。我如何指定我想要創建這些文件的文件夾?

  2. 在我的工作地點,我可以有一個包含50個表格的數據庫。但是,如果我只需要訪問2呢?我不想爲我的項目添加全部50個表格。我怎樣才能指定我想要的表格?

  3. 在我的數據庫上,我可以有一個名爲「Users」的表,因爲它是一個包含用戶的表。然而,腳手架應該創建一個類爲「用戶」,因爲它是一個用戶,直到它成爲列表。我如何指定正在創建的表的名稱?

謝謝大家的幫助。

+0

'-o Data'或'--output-dir Data'允許指定輸出目錄,'-t Users'或'--table Users'允許爲一個表用戶創建類。請參閱[這裏](https://github.com/aspnet/EntityFramework/blob/dev/src/EntityFramework.Commands/Commands/Program.cs#L143-L226) – Oleg

+0

關於第2點和第3點,DB第一工具是仍然相當有限。我認爲這些類型的功能都在積壓之中。 – Shoe

回答

6

嘗試使用

dnx ef dbcontext scaffold 
    "Server=Server\InstanceName;Database=db;Trusted_Connection=True;" 
    EntityFramework.MicrosoftSqlServer 
    --dataAnnotations 
    --outputDir Data 
    --verbose 
    --table dbo.Users 

上述所有參數應在同一行,但我包長線閱讀更輕鬆。您可以查看the source code以查看哪些選項支持RC1中的scaffold命令。

小心地在複製和粘貼appsettings.jsonConnectionString,因爲你可以在ConnectionStringServer=Server\\InstanceName;,但dnx ef dbcontext scaffold接受目前只有Server=Server\InstanceName;,你將得到的Server=Server\\InstanceName;appsettings.jsonConnectionString直接複製使用System.InvalidOperationException錯誤

其他重要參數是-p | --targetProject,如果您在類庫中使用存儲庫,這一點很重要。如果您在主項目中定義了ef命令,並且您在主項目的目錄中啓動了dnx ef dbcontext scaffold,但是您使用-p來引用類庫項目。

最後一句話。有時需要從數據庫的表中支撐子集。從命令行幫助中不完全清楚,但可以指定-t-table)多次參數。請參閱EF7 wiki中的the note。因此,如果要導入只有兩個表dbo.Usersdbo.PostsPosts是否有外鍵Users),那麼你可以使用下面的語法

dnx ef dbcontext scaffold 
    "Server=Server\InstanceName;Database=db;Trusted_Connection=True;" 
    EntityFramework.MicrosoftSqlServer 
    -a 
    -o Models 
    -v 
    -t dbo.Users 
    -t dbo.Posts 

更新:每個人都應該使用ASP.NET dotnet ef dbcontext scaffold代替dnx ef dbcontext scaffold核心RC2及更高版本。

+0

謝謝奧列格。這回答了我的大部分問題。正如Shoe所說,我想這個功能還是非常有限的,所以我會等待一個更新,看看他們是否實現了一種更改名稱的方式,以便讓「用戶」成爲「用戶」類。 – JohnC1

+0

@ JohnC1:不客氣!我希望能儘快擴大'ef dbcontext scaffold'的可能性。我想例如能夠從列表中導入一些特定的表(例如'--table dbo.Users; dbo.Products; dbo.Orders') – Oleg

+0

@ JohnC1:我更新了我的答案,包括如何能夠導入多個表:'-t dbo.Users -t dbo.Products - t dbo.Orders' – Oleg

相關問題