小编Mik*_*ike的帖子

如何将System.Type解析为System.Data.DbType?

System.Data.DbType在System命名空间中查找基类库类型的枚举值的最佳方法是什么?

.net c# ado.net

31
推荐指数
4
解决办法
4万
查看次数

忘记关闭和取消分配光标会发生什么?

将光标保持打开被称为不良做法.但是当你忘记关闭和/或解除分配时会发生什么?它如何影响SQL Server,连接/会话?使用游标的查询,存储过程和触发器的后果是否有任何差异?

t-sql sql-server cursor

31
推荐指数
3
解决办法
3万
查看次数

没有属性的protobuf-net序列化

我有一个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# protobuf-net

14
推荐指数
1
解决办法
5551
查看次数

DataAnnotations命名空间中的Enum值是否有开箱即用的验证器?

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# enums data-annotations

13
推荐指数
2
解决办法
1万
查看次数

Int32.Parse与int.Parse

它是一种常见的做法是使用C#类型别名来代替CTS系统.*类型(int而不是Int32string代替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类型进行静态调用的原因.

c# coding-style

10
推荐指数
2
解决办法
5687
查看次数

静态类型的开源跨平台现代编程语言

可能是一个愚蠢的问题.是否有Java和.NET平台的替代品?

哪一个:

  • 是一种编程语言本身.语言端口,除非它们成为主导,并不是真正成功的IMO.
  • 可能拥有像JVM 这样的自己的执行平台,这是一个很大的优势.但是翻译也没关系.
  • 静态类型.
  • 开源的,由开放社区开发.
  • 跨平台的,如Java:一次编译,到处运行.
  • 现代:多范式(OOP和泛型,功能是一个加号),并发(至少允许并发写),垃圾收集是一个加号,反射是一个加号.

我很高兴知道满足这个标准的不受欢迎的或实验性的语言.死语言不行.

所有上述(主观)条件均为真的语言可能属于两类之一

  1. 静态类型的解释语言项目.哪个会提供跨平台的解释器和库.
  2. 类似Java的语言,但有两个区别:不是Java端口,而是由社区开发.

open-source cross-platform static-typing

6
推荐指数
1
解决办法
834
查看次数

Entity Framework如何管理映射查询结果为匿名类型?

请考虑以下示例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.所以问题是在插入和选择的记录中找到匹配的列顺序.

c# linq-to-entities entity-framework entity-framework-4

5
推荐指数
1
解决办法
4203
查看次数

有没有办法减少 Equals 和 GetHashCode 中的样板代码量?

为了进行单元测试,我经常必须重写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)

c# equals gethashcode

5
推荐指数
1
解决办法
1155
查看次数

如何列出其二进制文件安装在 $GOBIN 中的软件包?

如果我理解正确,go install将二进制文件放在$GOBIN目录中。

我倾向于忘记哪些包提供了哪些二进制文件$GOBIN以及我编辑了哪些包go install

有没有办法列出当前go install-ed 的包?

显然,我可以这样做ls $GOBIN,这会给我二进制文件的名称。但是,我正在寻找一种方法来获取带有长名称的包列表,例如github.com/operator-framework/operator-sdk.

更新:( 此处go list ...建议)似乎不适用于我的情况,因为此命令希望我位于包含文件的目录中。我知道这是指定用于列出项目的包。就我而言,我需要找出安装到我的系统/user 中的所有软件包。go.modgo list$GOBIN

go go-modules

5
推荐指数
1
解决办法
84
查看次数

HTTP 服务器推送:服务到服务,无需浏览器

我正在开发一个基于云的后端 HTTP 服务,该服务将公开用于与一些本地系统集成。客户端系统是由外部供应商定制的,它们是具有自己的数据库的后端系统。这些系统部署在我们客户的公司中,我们无权访问它们,也无法控制它们。我们向供应商提供我们的 API 规范,他们实施客户端代码。

我的服务与客户端交换的数据格式基于XML并遵循一定的标准。供应商用不同的编程语言实现他们的客户端系统,随着时间的推移,新的供应商将会出现。我希望尽可能多的客户能够使用我的服务。

我的大部分服务 API 都是类似 REST 的:它接收 HTTP 请求,处理它们,然后发回 HTTP 响应。

此外,我的服务积累了一些数据状态变化,需要定期将这些数据推送到客户端系统。由于以下限制,此用例似乎不适合传统的客户端-服务器 HTTP 请求-响应模型。

  1. 由于业务的性质,客户端系统无法打开自己的 HTTP API 端点,因此我的服务无法与它们建立出站 HTTP 连接来传递数据状态通知。即使用 WebHooks 不是一种选择。

  2. 同时,我的服务利益相关者需要记录确认数据状态通知已被客户端系统接受,因此像 Amazon SNS 这样的即发即忘系统似乎不适用。

我正在考虑解决这个问题的几种方法,但我不确定我是否错过了一些简单的选项或一些已经解决问题的技术。于是就有了这个问题。

问题文本已更新:选项移至我自己的答案。

相关问题和资源

http message-queue server-push websocket grpc

1
推荐指数
1
解决办法
1342
查看次数