Db字段类型和C#字段类型?
假设我在SQL中有一个SP: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参数并将其保存在缓存中,然后构建某种代理来负责此操作 但是,我
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所说,您的检查必须在运行时完成。不过,您还应该在数据库中设置此限制,以便在程序出错时,数据库不允许存储无效字符串。