小编Fab*_*bio的帖子

具有分页和计数的SQL Server查询

我想用分页进行数据库查询.所以,我使用了一个通用表表达式和一个排名函数来实现这一点.看下面的例子.

declare @table table (name varchar(30));
insert into @table values ('Jeanna Hackman');
insert into @table values ('Han Fackler');
insert into @table values ('Tiera Wetherbee');
insert into @table values ('Hilario Mccray');
insert into @table values ('Mariela Edinger');
insert into @table values ('Darla Tremble');
insert into @table values ('Mammie Cicero');
insert into @table values ('Raisa Harbour');
insert into @table values ('Nicholas Blass');
insert into @table values ('Heather Hayashi');

declare @pagenumber int = 2;
declare @pagesize int = 3;
declare @total int;

with …
Run Code Online (Sandbox Code Playgroud)

sql-server pagination common-table-expression

26
推荐指数
1
解决办法
7万
查看次数

接口继承是一种不好的做法吗?

我想知道下面的代码是否显示了一个不好的做法(关于接口继承):

public interface IFoo : IDisposable
{
    void Test();
}

public class TestImpl : IFoo
{
    public void Test()
    {
        // do something
    }

    public void Dispose()
    {
        // disposing my dependencies
    }
}

public class FooFactory
{
    public IFoo CreateFoo()
    {
        return new TestImpl();
    }
}

public class Client
{
    public void Main()
    {
        FooFactory factory = new FooFactory();
        using(IFoo foo = factory.CreateFoo())
        {
            // do stuff then auto-dispose
            foo.Test();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我想要两件事:1.使用C#的using语句,这样我就可以优雅地处理我的具体对象的依赖(不需要向IDisposable投射任何东西).2.使用工厂方法创建具体对象,因此我只能使用接口.

分开,两者都是已知的良好做法,但在一起?我没有发现任何说这是错的http://msdn.microsoft.com/en-us/library/ms229022.aspx(MSDN-界面设计),但我认为这听起来不错......

我将不胜感激任何评论.如果这是一个不好的做法,我会遇到什么样的问题?

谢谢!

c# oop inheritance design-patterns

9
推荐指数
2
解决办法
2751
查看次数

ASP.NET和ThreadStatic是TransactionScope实现的一部分

我想知道TransactionScope类如何工作以保持不同方法调用之间的事务(不需要将其作为参数传递),我开始怀疑.我对这个问题有两点考虑:

1

通过Telerik JustDecompile查看TransactionScope的实现,我发现当前事务存储在System.Transactions.ContextData类的ThreadStatic成员中(下面的代码).

internal class ContextData
{
    internal TransactionScope CurrentScope;

    internal Transaction CurrentTransaction;

    internal DefaultComContextState DefaultComContextState;

    [ThreadStatic]
    private static ContextData staticData;

    internal WeakReference WeakDefaultComContext;

    internal static ContextData CurrentData
    {
        get
        {
            ContextData contextDatum = ContextData.staticData;
            if (contextDatum == null)
            {
                contextDatum = new ContextData();
                ContextData.staticData = contextDatum;
            }
            return contextDatum;
        }
    }

    public ContextData()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

CurrentData属性由TransactionScope的PushScope()方法调用,最后一个属性由大多数TransactionScope构造函数使用.

private void PushScope()
{
    if (!this.interopModeSpecified)
    {
        this.interopOption = Transaction.InteropMode(this.savedCurrentScope);
    }
    this.SetCurrent(this.expectedCurrent);
    this.threadContextData.CurrentScope = this;
}

public TransactionScope(TransactionScopeOption scopeOption)
{
    // …
Run Code Online (Sandbox Code Playgroud)

asp.net transactionscope threadstatic

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

EF的DbContext是否应包含所有表格?

我是EF4的新手,我正在试图找出创建我的DbContext类的最佳方法.

将所有表/实体放入一个且只有一个DbContext类中是否存在任何问题(特别是性能),如下面的代码?

public class AllInOneDb : DbContext
{
    public DbSet<Customer> Customers{ get; set; }
    public DbSet<Address> Addresses{ get; set; }
    public DbSet<Order> Order{ get; set; }
    public DbSet<Product> Products{ get; set; }
    public DbSet<Category> Categories{ get; set; }
    // and more and more entities...
}
Run Code Online (Sandbox Code Playgroud)

或者我应该根据功能的子集对我的类进行建模?

public class CustomerDb : DbContext
{
    public DbSet<Customer> Customers{ get; set; }
    public DbSet<Address> Addresses{ get; set; }
    public DbSet<Order> Order{ get; set; }
}

public class ProductDb : DbContext
{
    public DbSet<Product> Products{ …
Run Code Online (Sandbox Code Playgroud)

entity-framework dbcontext

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

如何在 C# 中使用 XML 序列化包含元素(而非根)的属性

我需要生成一个如下所示的 XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<inboundMessage xmlns="http://www.myurl.net">
  <header>
    <password>mypwd</password>
    <subscriberId>myuser</subscriberId>
  </header>
  <message xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="myType">
    <eventDate>2012-09-05T12:13:45.561-05:00</eventDate>
    <externalEventId />
    <externalId>SomeIdC</externalId>
  </message>
</inboundMessage>
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何在标记中包含 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="myType" 。我需要序列化的类是这样的:

[XmlType("inboundMessage")]
[XmlRoot(Namespace = "http://www.myurl.net")]
public class InboundMessage
{
    [XmlElement(ElementName = "header")]
    public Header _header;
    [XmlElement(ElementName = "message")]
    public List<MyType> _messages;
}
Run Code Online (Sandbox Code Playgroud)

我需要将哪些 XmlAttributes 添加到“_messages”成员中才能使其按照我想要的方式序列化?

蒂亚,埃德

c# attributes xml-serialization

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

Moq - 使用在测试执行期间更改的参数验证调用

鉴于以下代码

public class Entity
{
    public string Name { get; set; }
    public string Status { get; set; }
}

public interface IRepository
{
    void InsertEntity(Entity entity);
    void UpdateEntity(Entity entity);
}

public class Processor
{
    private IRepository _repository;

    public Processor(IRepository repository)
    {
        _repository = repository;
    }

    public void Execute(string name)
    {
        var entity = new Entity() { Name = name, Status = "Initialized" };
        _repository.InsertEntity(entity);
        // do other things with the entity
        entity.Status = "Processed";
        _repository.UpdateEntity(entity);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以编写一个单元测试来验证是否在 Execute …

c# unit-testing moq

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

跟踪更改 - observableArray中的可观察元素

我需要使用Javascript和Knockout.js编辑Web应用程序中的整数数组.此数组将绑定到文本框,并且每当更改任何文本框的值时,都会更新该数组.当它更新时,计算元素的总和.

这是我的第一次尝试:http://jsfiddle.net/ZLs2A/0/.它不起作用(在为任何元素键入新值时,sum值不会更新).那时我意识到observableArray只会在插入或删除项目后触发sum函数.

<h4>Numbers</h4>
<button data-bind="click: add">Add</button>
<ul data-bind="foreach: numbers">
    <li>
        <input data-bind="value: $data"></input>
    </li>
</ul>
<span data-bind="text: sum"></span>

function MyViewModel() {
    var self = this;

    self.numbers = ko.observableArray([
        1,
        2,
        3
    ]);

    self.sum = ko.computed(function() {
        var items = self.numbers();
        var total = 0;
        for (var i = 0; i < items.length; i++) {
            total += parseInt(items[i]);
        }
        return total;
    });

    self.add = function() {
        var lastIndex = self.numbers().length - 1;
        var lastValue = self.numbers()[lastIndex];
        self.numbers.push(lastValue …
Run Code Online (Sandbox Code Playgroud)

knockout.js

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

微服务数据复制模式

在微服务架构中,我们通常有两种微服务通信的方式。假设服务 A 需要从服务 B 获取信息。第一个选项是远程调用,通常通过 HTTPS 同步,因此服务 A 查询服务 B 托管的 API。

第二种选择是采用事件驱动架构,其中服务 B 的状态可以以异步方式由服务 A 发布和消费。使用此模型,服务 A 可以使用来自服务 B 的事件的信息更新其自己的数据库,并且所有查询都在此数据库中本地进行。这种方法的优点是可以更好地分离微服务,从开发到运营。但它有一些与数据复制相关的缺点。

第一个是磁盘空间的高消耗,因为相同的数据可以驻留在需要它的微服务的数据库中。但在我看来,第二个最糟糕:如果服务 B 不能按需要快速处理其订阅,或者在服务 B 上创建它的同时它不能用于服务 A,则数据可能会变得陈旧,因为模型的最终一致性。

假设我们使用 Kafka 作为事件中心,其主题配置为使用 7 天的数据保留期。当服务 B 发布其状态时,服务 A 保持同步。两周后,新服务 C 部署完毕,其数据库需要使用服务 B 拥有的所有信息进行充实。由于最旧的事件已经消失,我们只能从 Kafka 主题中获取部分信息。我的问题是我们可以使用哪些模式来实现此微服务的数据库丰富(除了要求服务 B 将其所有当前状态重新发布到事件中心)。

event-driven eventual-consistency database-replication apache-kafka microservices

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

本地IIS上的Oracle ORA-12154错误,但Visual Studio Development Server没有

我有一个ASP.NET应用程序可以在Visual Studio开发服务器启动时连接到Oracle,但是当我将它部署到我的本地IIS时,它没有连接,显示"ORA-12154:TNS:无法解析连接标识符指定"错误.

我的连接字符串是:

Data Source=ABC; User Id=USER; Password=PASSWORD;
Run Code Online (Sandbox Code Playgroud)

Tt正在使用TNS.我的tnsnames.ora位于C:\ oracle\instantclient_10_2 \network\admin,我的ORACLE_HOME系统变量指向C:\ oracle\instantclient_10_2.

为了使它工作,我将连接字符串更改为:

"SERVER=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = server1.theplaceiwork.com)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = server2.theplaceiwork.com)(PORT = 1521))(LOAD_BALANCE = yes))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = ABC)(FAILOVER_MODE =(TYPE = SELECT)(METHOD = BASIC))));uid=USER;pwd=PASSWORD;"
Run Code Online (Sandbox Code Playgroud)

所以不再使用TNS.

但是我想知道为什么我可以在使用Visual Studio进行debbu时使用TNS进行连接,但是在使用IIS时我不能.

有小费吗?

PS.我可以使用SqlDeveloper和TNS显示没有连接错误.

谢谢

asp.net oracle iis tns

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

C#如何管理循环中新运算符分配的内存?

例如:

for (i=0;i<10;i++)
{
   myclass = new myclass();
   // do stuff with myclass
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 在这种情况下,如何检索通过执行10次分配而分配的所有内存?
  2. 执行结束时我的内存占用量是多少?
  3. 使用C++中的删除功能,人们可以更好地控制它,但在这种情况下,对于第二次迭代,myclass只需要一个新的分配并继续前进?

.net memory-management new-operator

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