System.Data.DbType在System命名空间中查找基类库类型的枚举值的最佳方法是什么?
将光标保持打开被称为不良做法.但是当你忘记关闭和/或解除分配时会发生什么?它如何影响SQL Server,连接/会话?使用游标的查询,存储过程和触发器的后果是否有任何差异?
我有一个DataContracts的程序集,我需要为它生成.proto模式,以便能够与java系统交换数据.DataContracts代码可以更改,但我无法在其中添加[ProtoContract]和[ProtoMember]属性,因为它将导致protobuf-net程序集依赖性.我们在系统的C#部分中使用WCF,因此我们不希望在大多数不适用于Java系统的C#项目中依赖proto-buf程序集.
在GettingStarted部分的protobuf-net网站上,它说:
不喜欢属性?
在v2中,可以通过RuntimeTypeModel在运行时配置可以使用属性完成的所有操作.
但是我不知道如何在没有属性的情况下实际配置序列化,我还没有看到任何这样的例子.
我正在努力做到
[DataContract]
public class MyEntity
{
[DataMember(Order = 1)]
public String PropertyA { get; set; }
[DataMember(Order = 2)]
public int PropertyB { get; set; }
}
RuntimeTypeModel.Default.Add(typeof(MyEntity), false);
string proto = Serializer.GetProto<MyEntity>();
Run Code Online (Sandbox Code Playgroud)
并获得以下值作为 proto
package ProtobufTest;
message MyEntity {
}
Run Code Online (Sandbox Code Playgroud) C#枚举值不仅限于其定义中列出的值,还可以存储其基类型的任何值.如果未定义基本类型Int32或仅int使用基本类型.
我正在开发一个WCF服务,需要确信某些枚举具有一个值,而不是所有枚举为0的默认值.我从一个单元测试开始,找出是否[Required]能在这里做正确的工作.
using System.ComponentModel.DataAnnotations;
using Xunit;
public enum MyEnum
{
// I always start from 1 in order to distinct first value from the default value
First = 1,
Second,
}
public class Entity
{
[Required]
public MyEnum EnumValue { get; set; }
}
public class EntityValidationTests
{
[Fact]
public void TestValidEnumValue()
{
Entity entity = new Entity { EnumValue = MyEnum.First };
Validator.ValidateObject(entity, new ValidationContext(entity, null, null));
}
[Fact]
public void TestInvalidEnumValue()
{ …Run Code Online (Sandbox Code Playgroud) 它是一种常见的做法是使用C#类型别名来代替CTS系统.*类型(int而不是Int32和string代替String).但是我不清楚在这种情况下使用什么来调用类型的静态方法:别名或系统类型.
Microsoft似乎没有定义任何使用别名而不是系统类型的指南.但在MSDN中,别名用于变量,CTS等效项用于静态调用.例如MSDN:解析数字字符串
int number;
Int32.TryParse(value, out number);
Run Code Online (Sandbox Code Playgroud)
StyleCop在SA1121中定义了相反的方法 - 始终使用别名.所以int.Parse可以,而Int32.Parse不是.
这个问题是风格问题(在我看来).但我不明白使用CTS类型进行静态调用的原因.
可能是一个愚蠢的问题.是否有Java和.NET平台的替代品?
哪一个:
我很高兴知道满足这个标准的不受欢迎的或实验性的语言.死语言不行.
所有上述(主观)条件均为真的语言可能属于两类之一
请考虑以下示例LINQ to entity查询
from history in entities.foreignuserhistory
select new { history.displayname, login=history.username, history.foreignuserid }
Run Code Online (Sandbox Code Playgroud)
ToTraceString() 返回字符串看起来像:
SELECT "Extent1"."foreignuserid" AS "foreignuserid",
"Extent1"."displayname" AS "displayname",
"Extent1"."username" AS "username"
FROM "integration"."foreignuserhistory" AS "Extent1"
Run Code Online (Sandbox Code Playgroud)
对我来说问题是列与查询的顺序不同,并且不会像login示例中那样使用别名.Entity Framework在哪里存储匿名类型的映射信息?
背景:我将使用LINQ to entity为大规模操作开发带有select操作的insert.
更新:
使用select进行插入并不困难,除了未知列到属性映射算法.可以ObjectSet使用元数据获取目标的表和列名,构建INSERT INTO tableName (column_name1, …)sql语句字符串,然后附加一些ObjectQuery.ToTraceStringSELECT语句.然后DbCommand使用((EntityConnection)ObjectContext.Connection).StoreConnection和填充命令的参数创建一个带有结果的文本ObjectQuery.所以问题是在插入和选择的记录中找到匹配的列顺序.
为了进行单元测试,我经常必须重写Equals和方法。GetHashCode之后我的课程开始看起来像这样:
public class TestItem
{
public bool BoolValue { get; set; }
public DateTime DateTimeValue { get; set; }
public double DoubleValue { get; set; }
public long LongValue { get; set; }
public string StringValue { get; set; }
public SomeEnumType EnumValue { get; set; }
public decimal? NullableDecimal { get; set; }
public override bool Equals(object obj)
{
var other = obj as TestItem;
if (other == null)
{
return false;
}
if (object.ReferenceEquals(this, …Run Code Online (Sandbox Code Playgroud) 如果我理解正确,go install将二进制文件放在$GOBIN目录中。
我倾向于忘记哪些包提供了哪些二进制文件$GOBIN以及我编辑了哪些包go install。
有没有办法列出当前go install-ed 的包?
显然,我可以这样做ls $GOBIN,这会给我二进制文件的名称。但是,我正在寻找一种方法来获取带有长名称的包列表,例如github.com/operator-framework/operator-sdk.
更新:( 此处go list ...建议)似乎不适用于我的情况,因为此命令希望我位于包含文件的目录中。我知道这是指定用于列出项目的包。就我而言,我需要找出安装到我的系统/user 中的所有软件包。go.modgo list$GOBIN
我正在开发一个基于云的后端 HTTP 服务,该服务将公开用于与一些本地系统集成。客户端系统是由外部供应商定制的,它们是具有自己的数据库的后端系统。这些系统部署在我们客户的公司中,我们无权访问它们,也无法控制它们。我们向供应商提供我们的 API 规范,他们实施客户端代码。
我的服务与客户端交换的数据格式基于XML并遵循一定的标准。供应商用不同的编程语言实现他们的客户端系统,随着时间的推移,新的供应商将会出现。我希望尽可能多的客户能够使用我的服务。
我的大部分服务 API 都是类似 REST 的:它接收 HTTP 请求,处理它们,然后发回 HTTP 响应。
此外,我的服务积累了一些数据状态变化,需要定期将这些数据推送到客户端系统。由于以下限制,此用例似乎不适合传统的客户端-服务器 HTTP 请求-响应模型。
由于业务的性质,客户端系统无法打开自己的 HTTP API 端点,因此我的服务无法与它们建立出站 HTTP 连接来传递数据状态通知。即使用 WebHooks 不是一种选择。
同时,我的服务利益相关者需要记录确认数据状态通知已被客户端系统接受,因此像 Amazon SNS 这样的即发即忘系统似乎不适用。
我正在考虑解决这个问题的几种方法,但我不确定我是否错过了一些简单的选项或一些已经解决问题的技术。于是就有了这个问题。
问题文本已更新:选项移至我自己的答案。
c# ×6
.net ×1
ado.net ×1
coding-style ×1
cursor ×1
enums ×1
equals ×1
gethashcode ×1
go ×1
go-modules ×1
grpc ×1
http ×1
open-source ×1
protobuf-net ×1
server-push ×1
sql-server ×1
t-sql ×1
websocket ×1