Я думаю, что ошибка здесь
public int? Id { get; set; }
Идентификатор не должен быть обнуляемым.
Обновление: Я имею в виду, что вы должны написать:
public int Id { get; set; }
Знак вопроса делает ваше свойство обнуляемым, но поскольку это первичный ключ, оно не может быть нулевым. [ 118]
Я сделал небольшой пример здесь:
using System.Collections.Generic;
namespace ConsoleApp2.Models
{
public class Location
{
public int Id { get; set; }
public string Name { get; set; }
public IList<Office> Offices { get; set; }
}
}
Свободный Api
migrationBuilder.CreateTable(
name: "Locations",
columns: table => new
{
Id = table.Column<int>(nullable: false)
.Annotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn),
Name = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_Locations", x => x.Id);
});
Я могу добавить новое местоположение без проблем.
using ConsoleApp2.Models;
using System.Collections.Generic;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
MyDbContext _c = new MyDbContext();
List<Office> list = new List<Office>()
{
new Office()
{
OfficeName = "Reception"
}
};
Location l = new Location()
{
Name = "New York",
Offices = list
};
_c.Locations.Add(l);
_c.SaveChanges();
}
}
}
Я использую .net core 2.1 с EFcore 2.2.2.
Я надеюсь, что помощь.
Используемый файл инициализации хранится в переменной 'user-init-file'. Чтобы увидеть это использование «описать-переменную» (Ch v), введите «user-init-file», и он отобразит используемый файл.
Если вы работаете в Linux, вы можете попробовать это, чтобы увидеть, какие файлы открывает emacs при запуске.
sudo strace -o /tmp/emacs.txt -e open emacs
Вы можете попробовать посмотреть, какой файл найден:
C-x C-f ~/.emacs RET
~
преобразуется в значение переменной среды HOME
. Emacs ищет .emacs
, затем .emacs.elc
(байтовая скомпилированная версия), затем .emacs.el
, затем ~ / .emacs .d / init.elc
и ~ / .emacs.d / init.el
. В этой документации показаны альтернативы. Это также зависит от переменных среды LOGNAME
и USER
.
Вы также можете проверить содержимое буфера * Messages *
- хотя вы должны установить (setq message-log-max t)
(если можете), чтобы гарантировать, что все Сообщения сохраняются. Внутри этого буфера есть строки следующего вида:
Загрузка /home/tjackson/.emacs.tjackson.