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>?
我的PostgreSQL安装在Windows上.如何将数据从MySQL数据库迁移到PostgreSQL?我读过大量的aricles.什么都没有帮助:(
谢谢.
我的行动:
mysql转储:
mysqldump -h 192.168.0.222 --port 3307 -u root -p --compatible=postgresql synchronizer > c:\dump.sql
Run Code Online (Sandbox Code Playgroud)在pgsql上创建db同步器
进口转储:
psql -h 192.168.0.100 -d synchronizer -U postgres -f C:\dump.sql
Run Code Online (Sandbox Code Playgroud)输出:
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)我使用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) 我的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) 我有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.
谢谢.
我有线程,它处理一些分析工作.
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.请帮忙 - 出了什么问题?
编辑
经典线程创建代码 …
Hello在我的表单中,我在运行时创建了TFrame.在这个框架中,我创建了后台线程,并在无限循环中执行命令.但是当我摧毁这个框架时,我应该销毁这个线程.我试试
thread.Suspend;
thread.Terminate;
FreeAndNil(thread);
Run Code Online (Sandbox Code Playgroud)
但得到AV和ThreadError.我应该如何销毁线程?
我有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) 我使用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
我有通过其字符串属性快速查找对象的任务.宾语:
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)
我有一些问题:
我的搜索速度是否最佳.我想现在.
我对这些任务没什么好处.你可以给我一些提高性能的好建议吗?谢谢
.net ×5
c# ×4
delphi ×3
wcf ×2
web-services ×2
wsdl ×2
asp.net ×1
asp.net-mvc ×1
automapper ×1
casting ×1
cookies ×1
destroy ×1
dump ×1
interface ×1
migration ×1
mysql ×1
optimization ×1
postgresql ×1
session ×1