C# 将枚举值作为LINQ中的存储过程(数据函数)参数传递给SQL
如中所述,LINQ to SQL允许表映射通过指定列的类型自动来回转换为枚举-这适用于字符串或整数。但是,当使用存储过程而不是自动生成的SQL来创建和更新实体时,我遇到了这个问题 在我的数据库中,我有一个表Users,其列角色类型为int。我还有一个存储过程CreateUser,它接受int类型的参数@Role。我希望用户角色在我的C代码中由enum角色表示。我可以将自动生成的用户类上Role属性的类型从int更改为Role,但是项目拒绝编译,因为Role属性的类型与存储过程中@Role参数对应的数据函数Role参数的类型不匹配。数据函数参数类型是由LINQ到SQL自动生成的,我找不到任何方法来更改它们C# 将枚举值作为LINQ中的存储过程(数据函数)参数传递给SQL,c#,linq-to-sql,stored-procedures,parameters,enums,C#,Linq To Sql,Stored Procedures,Parameters,Enums,如中所述,LINQ to SQL允许表映射通过指定列的类型自动来回转换为枚举-这适用于字符串或整数。但是,当使用存储过程而不是自动生成的SQL来创建和更新实体时,我遇到了这个问题 在我的数据库中,我有一个表Users,其列角色类型为int。我还有一个存储过程CreateUser,它接受int类型的参数@Role。我希望用户角色在我的C代码中由enum角色表示。我可以将自动生成的用户类上Role属性的类型从int更改为Role,但是项目拒绝编译,因为Role属性的类型与存储过程中@Role参数对应
我正在考虑将Role属性保留为int,将其重命名为类似RoleValue的东西,使其私有,并添加另一个Role类型的公共属性来执行int-enum转换。但是似乎应该有更好的方法。您可以重载CreateUser方法
public Enum Role
{
Guy = 0,
Girl = 1
}
public partial LINQtoSQLClass
{
public ResultObject CreateUser(Role thisRole)
{
return CreateUser(Convert.ToInt32(thisRole);
}
}
使用T4模板使用后端数据库中的实时数据生成可枚举类也是很常见的。这样,它就可以与Ints匹配,您不必手动更新它。您可以重载CreateUser方法
public Enum Role
{
Guy = 0,
Girl = 1
}
public partial LINQtoSQLClass
{
public ResultObject CreateUser(Role thisRole)
{
return CreateUser(Convert.ToInt32(thisRole);
}
}
使用T4模板使用后端数据库中的实时数据生成可枚举类也是很常见的。通过这种方式,它与Ints匹配,您不必手动更新它
数据函数参数类型是由LINQ到SQL自动生成的,我找不到任何方法来更改它们
打开DBML文件,单击角色字段。“属性”窗口将有一个指定服务器类型以及.NET类型的位置。下面是一个如何工作的示例:
答案表明它可以与varchar和tinyint一起工作,因此它也可以与INT一起工作。最困难的部分可能是记住输入正确的名称空间。祝你好运
数据函数参数类型是由LINQ到SQL自动生成的,我找不到任何方法来更改它们
打开DBML文件,单击角色字段。“属性”窗口将有一个指定服务器类型以及.NET类型的位置。下面是一个如何工作的示例:
答案表明它可以与varchar和tinyint一起工作,因此它也可以与INT一起工作。最困难的部分可能是记住输入正确的名称空间。祝你好运