Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Db字段类型和C#字段类型?_C#_.net_Orm_Types_Ado.net - Fatal编程技术网

Db字段类型和C#字段类型?

Db字段类型和C#字段类型?,c#,.net,orm,types,ado.net,C#,.net,Orm,Types,Ado.net,假设我在SQL中有一个SP: CREATE PROCEDURE mySP @LastName nvarchar(10), @FirstName nvarchar(20) AS ... GO 在c#中,没有指定长度的字符串类型。其最大长度为2^32-1(IMHO) 那么,C#开发者有什么保护:不发送超过长度的字符串 (我不认为任何ORM也有这个限制——也许我错了) 唯一的方法(我明白了)是在(!)之前读取Sp参数并将其保存在缓存中,然后构建某种代理来负责此操作 但是,我

假设我在SQL中有一个SP:

CREATE PROCEDURE mySP
    @LastName nvarchar(10), 
    @FirstName nvarchar(20) 
AS 
  ...
GO
在c#中,没有指定长度的字符串类型。其最大长度为
2^32-1(IMHO)

那么,C#开发者有什么保护:发送超过长度的字符串

(我不认为任何ORM也有这个限制——也许我错了)

唯一的方法(我明白了)是在(!)之前读取Sp参数并将其保存在缓存中,然后构建某种代理来负责此操作

但是,我担心它只会在运行时失败

我说得对吗


有什么解决方案?

C#没有长度有限的字符串,检查必须在运行时完成。不过,这取决于您使用的ORM。EntityFramework有一个
MaxLength
属性,可以用来修饰字符串。

C#没有有限长度的字符串,检查必须在运行时完成。不过,这取决于您使用的ORM。EntityFramework有一个
MaxLength
属性,可以用来修饰字符串。

使用
if
条件检查字符串长度,如果超过了所需长度,则不要调用该过程。

使用
if
条件检查字符串长度,如果超过了所需长度,不要调用该过程。

NHibernate还允许您在映射配置中指定字符串的最大长度,但它仅在从NHibernate映射生成DB架构时使用。正如@zmbq所说,您的检查必须在运行时完成。不过,您也应该在数据库中设置此限制,以便在程序出错时,数据库不允许存储无效字符串。NHibernate还允许您在映射配置中指定字符串的最大长度,但它仅在从NHibernate映射生成DB架构时使用。正如@zmbq所说,您的检查必须在运行时完成。不过,您还应该在数据库中设置此限制,以便在程序出错时,数据库不允许存储无效字符串。