Я использую .NET 3.5 SP1.
Используя VS2008 Designer, я создал сущность «Категория» на основе таблицы «Категория» и «AppUser» на основе таблицы «AppUser» и «AppUserDetail» на основе таблицы «AppUserDetail».
DB TABLES:
CREATE TABLE [Category](
[CategoryId] [int] NOT NULL,
[CategoryName] [varchar](50) NOT NULL,
PRIMARY KEY ([CategoryId])
)
CREATE TABLE [AppUser](
[UserId] [int] NOT NULL,
[UserName] [varchar](50) NOT NULL,
[CategoryId] [int] NOT NULL,
PRIMARY KEY ([UserId]),
FOREIGN KEY (CategoryId) REFERENCES Category(CategoryId) ON DELETE CASCADE
)
CREATE TABLE AppUserDetail (
DetailId int NOT NULL,
UserId int not null,
Address varchar(2000) not null,
Comments varchar(2000) not null,
PRIMARY KEY ([DetailId] ),
FOREIGN KEY (UserId) REFERENCES AppUser(UserId) ON DELETE CASCADE
)
TABLE RECORDS:
Category: 1, Category-1
AppUser: 1, User1, 1
AppUserDetail: 1, 1, Address-1, Comments-1
Используя следующий код, я получаю пользователя, а затем пытаюсь отсоединить все объекты в контексте.
using (var context = new MyEntities()) {
AppUser user = context.AppUserSet.Where(u => u.UserId == 1).FirstOrDefault();
//Detach ALL entities
foreach (var stateEntry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified | EntityState.Unchanged)) {
if (!stateEntry.IsRelationship)
context.Detach(stateEntry.Entity);
}
}
Я получаю следующее исключение:
"System.InvalidOperationException was unhandled
Message="The object is in a detached state. This operation cannot be performed on an ObjectStateEntry when the object is detached."
Source="System.Data.Entity"
StackTrace:
at System.Data.Objects.ObjectStateEntry.get_IsRelationship()
В коде я выбираю только объекты, которые не отделены.
Скажите, пожалуйста, в чем причина этой ошибки?
Спасибо.