我有一个问题来了,我想一定是让任何人写入数据库来解决共同问题的解决方案。我一直在想,我忽略了一个明显的解决方案,这就是为什么我在这里找不到合适的现有问题的原因。坚持对象图到SQL Server在单个事务
想象一下,你需要让用户创建一个“类”,与“学生”的情况下,每个“学生”被分配给一个或更多的书。你有一个明确的层次结构,类 - >学生 - >书。
您有以下表格:
CREATE TABLE Classes (
ClassId int identity(1,1) primary key,
ClassName nvarchar(255)
)
CREATE TABLE Students (
StudentId int identity(1,1) primary key,
ClassId int,
StudentName nvarchar(255),
StudentImage image
)
CREATE TABLE StudentBooks (
StudentBookId int identity(1,1) primary key,
StudentId int,
BookName nvarchar(255)
)
有了这个人为的情况下,什么是我保存新对象的这整个图形选项,同时让SQL服务器分配的标识列,并保持于一身交易?假设一个班级可能有30个学生,每个学生分配了几本书。
我可以创建一个交易,并进行单独的调用为每个表的每一行,每一个新的父对象返回SCOPE_IDENTITY这样我就可以节省每一个孩子,同时保持RI完好无损。
我可以使用XML。我想避免这种情况,因为图形包含一个字节数组。
还有其他的选择吗?我想过在表参数中传递层次结构的每个级别。我不知道如何或如果这将工作。 (难道我必须定义一个表类型我的每个表,基本上是重复的模式?)
我可以使用SQL Server 2012这一点。
谢谢!
实体框架已经自动解决这一点,正确地设置标识值在图中的每个对象。也许你应该考虑使用像EF这样的ORM,而不是重新发明轮子。 –
你是否已经检查过一个ORM包装器? EF很容易使用,并做你想做的。 –
实体框架。 – Dan