好的,所以我的架构是这样的:
表:Timesheet_Hours
列:
这是该表的极简化版本,但它将用于本说明的目的.假设一个人只能拥有一个时间表记录.
我要做的是将记录添加到另一个名为WorkLog的表中.这里的每条记录都有与之相关的时间.当该表更新时,我也想更新Timesheet_Hours.
在我更新Timesheet_Hours之前,我想首先检查相关的Timesheets是否尚未发布,然后我想检查是否实际上有一条记录要更新.
if语句的第一部分,检查时间表是否尚未发布,工作正常.问题是第二部分.检查它将要更新的记录已经存在.问题是它总是会引发错误.
注意:下面的代码是从WorkLog表上的update,insert和delete触发器运行的存储过程中提取的.@PersonID是该表的参数之一.如果我注释掉该语句的第二部分,存储过程可以正常工作.
IF EXISTS
(
SELECT 1
FROM Timesheet_Hours
WHERE Posted_Flag = 1
AND Staff_Id = @PersonID
)
BEGIN
RAISERROR('Timesheets have already been posted!', 16, 1)
ROLLBACK TRAN
END
ELSE
IF NOT EXISTS
(
SELECT 1
FROM Timesheet_Hours
WHERE Staff_Id = @PersonID
)
BEGIN
RAISERROR('Default list has not been loaded!', 16, 1)
ROLLBACK TRAN
END
Run Code Online (Sandbox Code Playgroud) 我正在尝试从通过EF(代码优先)连接的ASP.NET MVC 3应用程序中的C#连接到共享托管环境中的SQL Server 2008数据库.
我的问题是生成的SELECT语句如下所示:
SELECT ... FROM [dbo].[TableName]
Run Code Online (Sandbox Code Playgroud)
抛出错误Invalid object name,但在我这样做时工作正常:
SELECT ... FROM [mySQLUserName].[TableName]
Run Code Online (Sandbox Code Playgroud)
如何指定dbo(例如mySQLUserName)以外的用户名?
编辑:
我发现的与此问题相关的最接近的文章是:
特别强调第二篇文章,但它没有指定如何设置除以外的用户名 dbo
背景:
我有一个Web服务,它返回表中的行(作为参数提供的表名),其ID大于某个Id(也作为参数提供).我们假设Ids是顺序的.
我使用Linq to SQL进行数据库交互,所以我想将新行返回为:
List<WhateverObject>
Run Code Online (Sandbox Code Playgroud)
因为我们只在运行时知道表名,所以我不能以正常的方式使用Linq,这使得事情变得更加复杂.
题:
代码如下(并且有效).我该如何简化它?这似乎过于复杂.
private object GetUpdateList(string tableName, int Id, DataClassesDataContext db)
{
PropertyInfo pi = db.GetType().GetProperty(tableName);
var table = pi.GetValue(db, null);
// Get type of object within the table.
Type genericType = table.GetType().GetGenericArguments()[0];
// The Where method lives on the Enumerable type in System.Linq
var whereMethods = typeof(System.Linq.Enumerable)
.GetMethods(BindingFlags.Static | BindingFlags.Public)
.Where(mi => mi.Name == "Where");
// There are actually 2 where methods - we want the one with 2 parameters
MethodInfo whereMethod = …Run Code Online (Sandbox Code Playgroud) SequenceId 是一个自动递增的标识列,但不是主键.
我想要发生的是当一行更新时,SequenceId设置为下一个可用值,例如:
_____________________
| SequenceId | Name |
| 1 | John |
| 2 | Jane |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Run Code Online (Sandbox Code Playgroud)
将约翰更新为杰克.SequenceId设置为下一个可用的标识值.
_____________________
| SequenceId | Name |
| 3 | Jack |
| 2 | Jane |
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Run Code Online (Sandbox Code Playgroud)
这可能与SQL Server一起使用吗?如果没有,那将是另一种选择?