小编And*_*kov的帖子

将List <T>转换为List <Interface>

public interface IDic
{
    int Id { get; set; }
    string Name { get; set; }
}
public class Client : IDic
{

}
Run Code Online (Sandbox Code Playgroud)

我怎样才能投List<Client>List<IDic>

.net c# casting interface

100
推荐指数
5
解决办法
5万
查看次数

MySql到PostgreSql的迁移

我的PostgreSQL安装在Windows上.如何将数据从MySQL数据库迁移到PostgreSQL?我读过大量的aricles.什么都没有帮助:(

谢谢.

我的行动:

  1. mysql转储:

    mysqldump -h 192.168.0.222 --port 3307 -u root -p --compatible=postgresql synchronizer > c:\dump.sql
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在pgsql上创建db同步器

  3. 进口转储:

    psql -h 192.168.0.100 -d synchronizer -U postgres -f C:\dump.sql
    
    Run Code Online (Sandbox Code Playgroud)
  4. 输出:

    psql:C:/dump.sql:17: NOTICE:  table "Db_audit" does not exist, skipping
    DROP TABLE
    psql:C:/dump.sql:30: ERROR:  syntax error at or near "("
    ?????? 2:  "id" int(11) NOT NULL,
               ^
    psql:C:/dump.sql:37: ERROR:  syntax error at or near ""Db_audit""
    ?????? 1:LOCK TABLES "Db_audit" WRITE;
                 ^
    psql:C:/dump.sql:39: ERROR:  relation "Db_audit" does not exist
    ?????? 1:INSERT INTO "Db_audit" VALUES (4068,4036,4,1,32,'2010-02-04 …
    Run Code Online (Sandbox Code Playgroud)

mysql migration postgresql dump

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

Automapper null属性

我使用Automapper将对象映射到dtos.

public class OrderItem : BaseDomain
{
    public virtual Version Version { get; set; }
    public virtual int Quantity { get; set; }
}




[DataContract]
[Serializable]
public class OrderItemDTO
{
    [DataMember]
    public int Id { get; set; }
    [DataMember]
    public string Guid { get; set; }
    [DataMember]
    public virtual int? VersionId { get; set; }
    [DataMember]
    public virtual string VersionName { get; set; }
    [DataMember]
    public virtual int Quantity { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

因此,当我使用null版本的OrderItem时,我得到一个例外:

 Mapper.Map<OrderItem, OrderItemDTO>(item)

 Missing type map …
Run Code Online (Sandbox Code Playgroud)

c# automapper

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

WebApi Action过滤器调用两次

我的WebApi过滤方法OnActionExecuted被调用两次.我的过滤器(我尽可能简单):

   public class NHibernateActionFilter : ActionFilterAttribute
   { 
        //  [Inject]
        //   public ISessionFactoryProvider sessionFactoryProvider { get; set; }
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
           var a = 5;
           var b = a;
           //new BaseSessionProvider(sessionFactoryProvider).EndContextSession();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的设置:

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        WebApiConfig.Register(GlobalConfiguration.Configuration);
        //http://stackoverflow.com/questions/9521040/how-to-add-global-asp-net-web-api-filters
        FilterConfig.RegisterWebApiFilters(GlobalConfiguration.Configuration.Filters);
    }

    public class FilterConfig
    {

        public static void RegisterWebApiFilters(System.Web.Http.Filters.HttpFilterCollection filters)
        {
             filters.Add(new NHibernateActionFilter());
        }
     }
Run Code Online (Sandbox Code Playgroud)

在调试器中,我OnActionExecuted用相同的方法捕获两次actionExecutedContext.为什么?

UPD

Controller
public class BankSmsController : ApiController
{
         [AcceptVerbs(HttpVerbs.Get)]
         public int GetTest()
         {
             return …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc action-filter asp.net-web-api

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

不同的WSDL ASMX,WCF Web服务

我有asmx web-service,它可以从其他客户端(.NET,Delphi)成功使用.

我尝试来到wcf,并在WCF服务中编写相同的逻辑(basicHttpBinding用于互操作性).(.net客户端消耗正常,但delphi 7无法调用此服务).

我开始研究两种服务(asmx,wcf)之间的差异并检测它们的wsdl是不同的:

WSDL asmx:

<s:element name="Test">

<s:complexType>

<s:sequence>
<s:element minOccurs="1" maxOccurs="1" name="a" type="s:int"/>
</s:sequence>
</s:complexType>
</s:element>

<s:element name="TestResponse">

<s:complexType>

<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="TestResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
Run Code Online (Sandbox Code Playgroud)

wcf的wsdl是相当不同的:

<wsdl:operation name="Test"> <soap:operation soapAction="http://tempuri.org/ISyncer/Test" style="document"/>

<wsdl:input> <soap:body use="literal"/> </wsdl:input>

<wsdl:output> <soap:body use="literal"/> </wsdl:output>

<wsdl:fault name="ServiceFaultExceptionFault"> <soap:fault name="ServiceFaultExceptionFault" use="literal"/> </wsdl:fault> </wsdl:operation>
Run Code Online (Sandbox Code Playgroud)

我认为delphi无法生成正确的代理是一个共鸣.

我可以配置wcf来生成与asmx相同的wsdl.

谢谢.

.net delphi wcf wsdl web-services

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

c#使用后台线程调用的线程问题

我有线程,它处理一些分析工作.

   private static void ThreadProc(object obj)
    {
        var grid = (DataGridView)obj;
        foreach (DataGridViewRow row in grid.Rows)
        {
            if (Parser.GetPreparationByClientNameForSynonims(row.Cells["Prep"].Value.ToString()) != null)
                UpdateGridSafe(grid,row.Index,1);
            Thread.Sleep(10);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我想在循环中安全地更新我的gridView,所以我使用经典方式:

    private delegate void UpdateGridDelegate(DataGridView grid, int rowIdx, int type);
    public static void UpdateGridSafe(DataGridView grid, int rowIdx, int type)
    {
        if (grid.InvokeRequired)
        {
            grid.Invoke(new UpdateGridDelegate(UpdateGridSafe), new object[] { grid, rowIdx, type });
        }
        else
        {
            if (type == 1)
                grid.Rows[rowIdx].Cells["Prep"].Style.ForeColor = Color.Red;
            if (type==2)
                grid.Rows[rowIdx].Cells["Prep"].Style.ForeColor = Color.ForestGreen;

        }
    }
Run Code Online (Sandbox Code Playgroud)

但是当我进入UpdateGridSafe时,程序会挂起.

在调试器中,我看到grid.Invoke不会调用UpdateGridSafe.请帮忙 - 出了什么问题?

编辑

经典线程创建代码 …

.net c# multithreading

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

正确的线程破坏

Hello在我的表单中,我在运行时创建了TFrame.在这个框架中,我创建了后台线程,并在无限循环中执行命令.但是当我摧毁这个框架时,我应该销毁这个线程.我试试

thread.Suspend;
thread.Terminate;
FreeAndNil(thread);
Run Code Online (Sandbox Code Playgroud)

但得到AV和ThreadError.我应该如何销毁线程?

delphi multithreading destroy

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

WCF Delphi7方法输入参数

我有wcf web-service(basicHttpBinding).我们的Delphi7客户端无法正确使用它.我已经使用WCF附加功能展平了WSDL.好.Delphi7 wsdl导入器生成代理正确.

现在我遇到了输入参数的问题.它们总是有默认值(对于字符串为空,对于int为0).

方法delphi7的输出值可以正常.例如:

        public string Test(string a)
        {
              return "Test"+a;
        }
Run Code Online (Sandbox Code Playgroud)

此方法始终返回"测试".我的日志系统修复了我已经空了一个方法,所以问题是正确的传输输入参数.

我不能忽视什么是错的

编辑

代理:

ISyncer = interface(IInvokable)
  ['{D46862B0-BDD3-8B80-35A8-A2AC69F24713}']
    function  Test(const a: String): String; stdcall;
  end;
Run Code Online (Sandbox Code Playgroud)

呼叫:

Sync:=(dmMain.HTTPRIO1 as ISyncer);
test:=Sync.Test('5555');
Run Code Online (Sandbox Code Playgroud)

dmMain.HTTPRIO1在选项中有soLiteralParams:

在里面:

InvRegistry.RegisterInvokeOptions(TypeInfo(ISyncer), ioLiteral);
Run Code Online (Sandbox Code Playgroud)

通话结束后,我收到消息的异常:

Error deserializtion message body for operation Test. 
Operation formatter detects ivalid message body. Expecting node type "Element"
with name "Test" and namespace "http://tempuri.org". Actually node type "Element"
with name "xsd:String" and namespace "http://w3.org/2001/XMLSchema"
Run Code Online (Sandbox Code Playgroud)

wsdl片段:

<xsd:element name="Test">
?
<xsd:complexType>
?
<xsd:sequence>
<xsd:element minOccurs="0" …
Run Code Online (Sandbox Code Playgroud)

.net delphi wcf wsdl web-services

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

.ASPXAUTH cookie在会话结束时到期

我使用asp.net的通用auth基础设施和auth控件(登录,注销,...)

我的配置:

<authentication mode="Forms">
   <forms loginUrl="~/Administrators/Login.aspx" timeout="500000" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

我希望看到.ASPXAUTH cookie将在明年到期,我不应该一次又一次地输入login\passw

但是我发现这个cookie总是在会话结束时到期.我该如何改变这种行为?

编辑

我确定使用checkox"记住我".我认为asp.net应该创建持久性cookie

asp.net authentication cookies session

5
推荐指数
2
解决办法
3219
查看次数

通过字符串属性快速查找对象

我有通过其字符串属性快速查找对象的任务.宾语:

  class DicDomain
  {
    public virtual string Id{ get; set; }
    public virtual string Name { get; set; }
  }
Run Code Online (Sandbox Code Playgroud)

为了存储我的对象,我使用List [T]字典,其中T现在是DicDomain.我有5-10个这样的列表,每个列表包含大约500-20000.任务是按名称查找对象.我现在使用下一个代码:

  List<T> entities = dictionary.FindAll(s => s.Name.Equals(word, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)

我有一些问题:

我的搜索速度是否最佳.我想现在.

  1. 数据结构.它列出了这项任务的好处.哈希表怎么样,排序......
  2. 方法查找.可能是我应该使用字符串实习生?

我对这些任务没什么好处.你可以给我一些提高性能的好建议吗?谢谢

.net c# optimization

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