Я работаю в asp.net 3.5 sp1. У меня есть две таблицы
User
UserID PK (int)
UserName (varchar)
ContactInfoID FK (int) Allow Null
ContactInfo
ConactInfoID PK (int)
Address (varchar)
City (varchar)
State (varchar)
Zip (varchar)
Я пытаюсь использовать EDM для вставки / обновления пользователя без соответствующего родительского ContactInfo. База данных позволяет это.
Я хочу иметь возможность установить ContactInfo_ContactInfoID = -1 для представления нулевого родителя.
У меня есть следующая функция в частичном классе пользователя. Я включил ошибки, которые я получаю, когда я пытался установить различные аспекты EntityKey в ноль.
public int ContactInfo_ContactInfoID
{
get
{
if (this.ContactInfoReference == null)
return -1;
if (this.ContactInfoReference.EntityKey == null)
return -1;
return (int)this.ContactInfoReference.EntityKey.EntityKeyValues [0].Value;
}
set
{
//To notify others listening that the property is changing
this.OnPropertyChanging ("ContactInfoReference_ContactInfoD");
if (value != -1)
{
//Always needs to create a new EntityKey object
this.ContactInfoReference.EntityKey =
new EntityKey (
"ProjectRedEntities.ContactInfo",
new EntityKeyMember []
{ new EntityKeyMember("ContactInfoID",
(object)value) });
}
else
{
// this.ContactInfoReference.EntityKey = null;
// ERROR: A relationship is being added or deleted from an AssociationSet 'FK_User_ContactInfo'. With cardinality constraints, a corresponding 'User' must also be added or deleted.
// this.ContactInfoReference.Value = null;
// ERROR : A relationship is being added or deleted from an AssociationSet 'FK_User_ContactInfo'. With cardinality constraints, a corresponding 'User' must also be added or deleted.
// this.ContactInfoReference.EntityKey =
// new EntityKey (
// "ProjectRedEntities.ContactInfo", "ContactInfoID", null);
// ERROR: Value cannot be null.
// this.ContactInfoReference.EntityKey = EntityKey.NoEntitySetKey;
// ERROR: The EntityKey property cannot be set to EntityNotValidKey, NoEntitySetKey, or a temporary key.
// this.ContactInfoReference.EntityKey =
// new EntityKey ();
// ERROR The EntityKey property cannot be set to EntityNotValidKey, NoEntitySetKey, or a temporary key.
}
//To notify others listenging that the property has changed
this.OnPropertyChanged ("ContactInfoReference_ContactInfoID");
}
}
Если я пытаюсь установить для поля nullable в отношении true значение, то я получаю ошибку компиляции
'ContactInfoID' для типа ContactInfo недопустим. Все части ключа не должны обнуляться.
Я могу загрузить пользователя из базы данных с нулевым ContactInfoID, но каждый раз, когда я пытаюсь установить для EntityKey значение null, я получаю исключения.
Как установить для User.ContactInfoID значение null?