У меня есть таблица «Местоположение», которая имеет отношение внешнего ключа к «Сайту».Я использую linq для sql, чтобы попытаться добавить новую запись местоположения:
Location l = new Location
{
Description = text,
FloorId = 0,
IsCurrentLoc = false,
LastMove = DateTime.Now,
MoveId = 0,
SiteId = 1
};
LocationTable.InsertOnSubmit(l);
LocationTable.Context.SubmitChanges();
Однако, когда я пытаюсь сохранить строку местоположения, я вижу эту ошибку:
An attempt was made to remove a relationship between a Site and a Location. However, one of the relationship's foreign keys (Location.SiteId) cannot be set to null.
У меня естьустановить местоположение siteid (идентификатор сайта 1 существует в базе данных).
Мои классы linq-to-sql выглядят так:
[Table(Name = "Locations")]
public class Location
{
private List<InstallLocation> _InstallLocations = new List<InstallLocation>();
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
internal int LocationId { get; set; }
[Association(ThisKey = "SiteId", OtherKey = "SiteId", IsForeignKey = true)]
public Site Site
{
get;
set;
}
[AssociationAttribute(ThisKey = "LocationId", OtherKey = "LocationId")]
public List<InstallLocation> InstallLocations
{
get
{
return this._InstallLocations;
}
set
{
this._InstallLocations = value;
}
}
}
РЕДАКТИРОВАТЬ - так что я знаю, почему это происходит, но не как это исправить ...
Благодаря этой записи я теперь вижу, что происходит.Свойство "Сайт" имеет приоритет над идентификатором сайта.Так как я не устанавливаю для Site какое-либо значение, он пытается установить для SiteId значение null, что недопустимо, поэтому происходит сбой.
Что я не совсем понимаю, так это как с этим работать.Я не хочу загружать сущность сайта из базы данных и выполнять удар по БД только для настройки сайта.У меня есть SiteId, и это все, что мне нужно, чтобы сохранить свое «Местоположение».
Есть идеи?