使用Code First在类中定义字符串时,生成的数据库中的列的缺省值允许为空.
public string MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)
创建此列:
MyString(nvarchar(max),null)
我可以通过使用[Required]
属性或使用Fluent API中的.IsRequired()方法将其更改为"not null" .
其他数据类型的默认值不允许空值.
public int MyInt { get; set; }
public DateTime MyDateTime { get; set; }
public float MyFloat { get; set; }
public decimal MyDecimal { get; set; }
public bool MyBool { get; set; }
Run Code Online (Sandbox Code Playgroud)
创建这些列:
MyInt(int,not null)
MyDateTime(datetime,not null)
MyFloat(真实,非空)
MyDecimal(十进制(18,2),不为null)
MyBool(位,不是null)
我可以通过在Fluent API中使用.IsOptional()方法来更改这些以允许空值.是否有一个属性可以做同样的事情?
我还可以更改类定义中的数据类型以允许空值(int?,DateTime?等),这会产生允许数据库中为空的列.
默认情况下,对于字符串而不是其他数据类型允许空值的基本原理是什么?
我可能是愚蠢的,但在运行代码后似乎永远不会在'lambda窗口'中显示任何内容.任何人都可以解释它应该如何工作?
我正在将a转换nullable integer
为a string
,并且Resharper警告我使用InvariantCulture.
shipment.ShipmentID.ToString()
Run Code Online (Sandbox Code Playgroud)
快速Alt-Enter,稍后输入,给我这个:
shipment.ShipmentID.ToString(CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)
不幸的是,Resharper并不满意,并提出同样的建议,这对我来说没有意义.
shipment.ShipmentID.ToString(CultureInfo.InvariantCulture,
CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)
nullable int上的ToString()将不会构建,给出一个错误,指出No overload方法'ToString'需要1个参数.
不可为空的整数表现不同.
int requiredInt = 3;
// no Resharper or compiler warning
var stringFromRequiredInt = requiredInt.ToString(CultureInfo.InvariantCulture);
Run Code Online (Sandbox Code Playgroud)
如何将a转换为nullable int
对string
不同语言环境中的计算机安全的应该怎么做?
我喜欢Balsamiq的粗略外观以及快速将设计融合在一起的能力.我希望能够为建筑图做同样的事情,但Balsamiq没有任何对象用于那些类型的图纸.
Visio和PowerPoint工作正常,但界面阻碍了.(搜索对象等)最终结果也太过抛光和正式外观,这在新系统的概念阶段是不好的.
是否有另一种工具可以像Balsamiq一样工作,适用于架构图?白板+相机很好,但我并不总是有白板.
从单元格中删除超链接也会删除格式。
Selection.Hyperlinks.Delete
Run Code Online (Sandbox Code Playgroud)
有没有办法保留格式,或者我需要在删除超链接后重新应用它?
我正在尝试优化需要很长时间的查询.查询的目标是获得最佳类似的F2.(特殊相似性度量)这是我的例子:
CREATE TABLE Test
(
F1 varchar(124),
F2 varchar(124),
F3 varchar(124)
)
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'A', 'B', 'C' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'D', 'B', 'E' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'F', 'I', 'G' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'F', 'I', 'G' )
INSERT INTO TEST ( F1, F2, F3 ) VALUES ( 'D', 'B', …
Run Code Online (Sandbox Code Playgroud) 我有一个包含加密证书的 USB 令牌,该证书具有公钥和私钥。现在我想用 C# 创建一个应用程序,通过它我可以找到可访问的证书信息。当我插入 USB 令牌时,它被检测到,但计算机段上没有显示驱动器,因为它发生在闪存驱动器上。
如何从 USB 驱动器读取证书?
我想选择一个对象数组中的最大数字,所以例如,我想获得x
拥有最大数字的属性(在这个例子中,maximum
应该是200
):
var myArr = [{x:100,y:200},{x:200,y:500}];
//does not work:
var maximum = Math.max.apply(Math,myArr.x);
Run Code Online (Sandbox Code Playgroud) 我有一个客户列表,可以根据用户的选择从1到6个字段中进行排序.排序字段可以按任何顺序排列.如果我提前知道字段和序列,则排序很容易:
customers = customers
.OrderBy(c => c.LastName)
.ThenBy(c => c.City)
.ThenBy(c => c.Age).ToList();
Run Code Online (Sandbox Code Playgroud)
我如何在运行时传递排序字段?有没有办法做这样的事情?
string sortField1 = "State";
string sortField2 = "City";
string sortField3 = "Type";
customers = customers
.OrderBy(c => c.sortField1)
.ThenBy(c => c.sortField2)
.ThenBy(c => c.sortField3).ToList();
Run Code Online (Sandbox Code Playgroud) 我喜欢使用Upsert存储过程来更新记录(如果它们存在)或者如果它们不存在则插入它们.没有它们,我需要首先找出记录是否存在,然后根据结果调用两个单独的存储过程.
在我创建名为UpdateOrDeleteRow的存储过程之前,我从未真正考虑过这个问题.当我发现自己在名字中包含"Or"时,我的SRP蜘蛛感开始了,我意识到这些upotss基本上是相同的.
这是违反SRP的吗?如果是这样,是否可以接受?如果没有,我该怎么办?
我意识到SRP是一个OOP原则,而T-SQL不是OOP语言,但原理的基础似乎也应该适用于此.
c# ×2
linq ×2
sql ×2
sql-server ×2
architecture ×1
asp.net-mvc ×1
certificate ×1
diagram ×1
dynamic-linq ×1
excel ×1
group-by ×1
int ×1
javascript ×1
join ×1
linqpad ×1
locale ×1
nullable ×1
oop ×1
token ×1
usb ×1
vba ×1