Я создал всю свою модель, а затем добавил новую миграцию с Add-Migration Initial
.Add-Migration имя одного столбца указано более одного раза
Добавление миграции создало файл миграции, как и ожидалось в папке миграции, но по какой-то причине он дважды создал столбец с именем 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()
исходит из но это вызывает у меня проблему при попытке обновить базу данных.
Произошла ошибка
Имена столбцов в каждой таблице должны быть уникальными. Имя столбца «Client_id» в таблица «scripter_campaigns» указана более одного раза.
Кроме того, имеются ли в базе данных, которые необходимы для того, чтобы я мог строить отношения между моими объектами?
Может быть, я не понимаю, что делает ключевое слово virtual. что делает [ForeignKey («Клиент»)]? –
@MikeA На мой взгляд, виртуальный позволяет ленивую загрузку. '[ForeignKey (« Клиент »)]' говорит, что 'public int client_id {get; задавать; } 'будет хранить значение из' public virtual Client Client {get; задавать; } 'object – Komengem
И есть ли способ не использовать внешние ключи? Внешние ключи добавят накладные расходы, которые я хотел бы получить от –