我創建了我的所有模型,然後我添加了一個新遷移Add-Migration Initial
。添加遷移一個列名不止一次
添加遷移在遷移文件夾中創建了與遷移文件類似的遷移文件,但由於某種原因,它創建了一個名爲client_id
的列兩次。我期待創建一個名爲client_id
的列,其類型爲整數,且不可爲空。
我應該注意,client_id
這一列引用Clients
模型的關係。
這裏是我的模型類看起來怎麼樣
[Table("scripter_campaigns")]
public class Campaign
{
[Key]
[Column(Order = 1)]
public int id { get; set; }
[Column(Order = 2)]
[StringLength(200)]
[Required]
[MinLength(5, ErrorMessage = "The title must be greater than 5 characters in length"),
MaxLength(200)]
public string name { get; set; }
[Column(Order = 3)]
[StringLength(200)]
public string layout { get; set; }
[Column(Order = 4)]
[StringLength(200)]
public string call_list_server_name { get; set; }
[Column(Order = 5)]
[StringLength(200)]
public string call_list_table_name { get; set; }
[StringLength(200)]
public string status { get; set; }
public string intro_url { get; set; }
public string use_transfer { get; set; }
public string route_callback_to { get; set; }
public string call_list_database_name { get; set; }
public int client_id { get; set; }
public DateTime? created_at { get; set; }
public DateTime? modified_at { get; set; }
public virtual Client Client { get; set; }
//Initilize the default value
public Campaign()
{
status = "Active";
use_transfer = "No";
route_callback_to = "Self";
}
}
,但它產生的代碼在遷移腳本上()方法
CreateTable(
"dbo.scripter_campaigns",
c => new
{
id = c.Int(nullable: false, identity: true),
name = c.String(nullable: false, maxLength: 200),
layout = c.String(maxLength: 200),
call_list_server_name = c.String(maxLength: 200),
call_list_table_name = c.String(maxLength: 200),
status = c.String(maxLength: 200),
intro_url = c.String(),
use_transfer = c.String(),
route_callback_to = c.String(),
call_list_database_name = c.String(),
client_id = c.Int(nullable: false),
created_at = c.DateTime(),
modified_at = c.DateTime(),
Client_id = c.Int(),
})
.PrimaryKey(t => t.id)
.ForeignKey("dbo.clients", t => t.Client_id)
.Index(t => t.Client_id);
我不明白的地方Client_id = c.Int()
是來自但是當我嘗試更新數據庫時,它引起了我的問題
這裏是錯誤
每個表中的列名必須是唯一的。 表'scripter_campaigns'中的列名'Client_id'被多次指定。
此外,數據庫中的外鍵是否需要我能夠在我的對象之間建立關係?
可能是我不理解關鍵字虛擬做什麼。 [ForeignKey(「Client」)]究竟做了什麼? –
@MikeA據我的理解,虛擬允許延遲加載。 '[ForeignKey(「Client」)]'說'public int client_id {get;組; }'將持有來自'公共虛擬客戶端客戶端{get;組; }'對象 – Komengem
有沒有辦法不使用外鍵?當您調用公共虛擬客戶端客戶端{get;}時,外鍵會增加一個開銷,我想從 –