Предположим, у меня есть объект с именем Department, с суррогатным ключом DepartmentUUID
DDL выглядит так:
CREATE TABLE [dbo].[Department]
(
DepartmentUUID [UNIQUEIDENTIFIER] NOT NULL
, DepartmentName varchar(24) not null
, CreateDate smalldatetime not null
)
GO
ALTER TABLE [dbo].[Department] ADD CONSTRAINT PK_Department PRIMARY KEY NONCLUSTERED (DepartmentUUID)
GO
ALTER TABLE [dbo].[Department] ADD CONSTRAINT CK_DepartmentName_Unique UNIQUE (DepartmentName)
GO
ALTER TABLE [dbo].[Department] ADD CONSTRAINT [DF_Department_DepartmentUUID] DEFAULT ( NEWSEQUENTIALID() ) FOR DepartmentUUID
GO
ALTER TABLE [dbo].[Department] ADD CONSTRAINT [DF_Department_CreateDate] DEFAULT ( CURRENT_TIMESTAMP ) FOR CreateDate
GO
Теперь для кода Entity Framework. Важными частями являются:
1. Используя метод AttachTo.
2. Создание временного объекта и установка значения его первичного ключа. (суррогатный ключ).
public int DeleteDepartment(Guid departmentUUID)
{
int returnValue = 0;
Department holder = new Department();
holder.DepartmentUUID = departmentUUID; // DepartmentUUID is the primary key of this object (entity in the db)
using (MyContectObject context = new MyContectObject())
{
context.AttachTo("Departments", holder);
context.DeleteObject(holder);
int numOfObjectsAffected = context.SaveChanges();
returnValue = numOfObjectsAffected;
context.Dispose();
}
return returnValue;
}