3

我想听听你的建议。

我现在正在使用 C#、绑定、ADO.Net 实体框架、ODP.net 和 Oracle 数据库开发一个小型 WPF 客户端应用程序。

该应用程序很小,有两个 XAML 屏幕,大约 15 个表。我通过应用程序填充我的实体并使用 SaveChanges 方法来使用实体进行开发。

但是我们的 DBA 说我无权直接访问但只能使用存储过程。我问他为什么,他说这是一个安全原因,因为在删除一个表中的记录时,使用存储过程强制提供行标识符。

据他介绍,如果通过存储过程提供了 id,则应用程序可能会删除一张表中的所有行,而不是只删除一行。

我发现这对于只有 15 桌的人来说太过分了。

你怎么看?

4

2 回答 2

1

您是否曾向您的 DBA 建议您使用 Linq to SQL?这样您就可以提取对象,代表单独的行,这样您就不太可能意外删除多行。

就我个人而言,我认为 EDM 对于 DB 的大小来说可能有点过分了。

我应该说我是 LINQ to SQL 的大力支持者,但不是 SP 的忠实拥护者......

于 2013-05-22T12:48:24.990 回答
0

ODP.NET 之上的 LINQ2SQL 是一个很棒的堆栈。我同意 Andrew 的观点,因为您必须编写代码来加载记录、删除所有记录并提交更改,这并不是“容易”发生的事情。

在 LINQ 语句中忘记 where 子句并不比在存储过程中忘记 where 子句更容易或更难。

于 2013-05-23T00:16:58.750 回答