小编cad*_*ll0的帖子

AutoMapper 2.1.265中缺少成员

在AutoMapper 2.0中,我使用Profiles来配置我的映射.我使用SourceMemberNameTransformerDestinationMemberNameTransformer匹配我的源和目标属性名称.

在2.1.265中,这些属性不再出现在Profile上.有谁知道他们被删除的原因?但更重要的是,我如何复制此功能.

编辑

我一直在寻找的SourceMemberNamingConventionDestinationMemberNamingConvention,但我无法找到任何文件为如何将这些工作.有没有人有使用自定义的经验INamingConvention

编辑2

源成员是从第三方数据库生成的.通常,它们使用所有小写列名称和单词之间的下划线.有时他们会忽略下划线,有时他们会随意大写.

目标成员尝试尽可能遵循.NET命名约定.删除了下划线,下划线后面的第一个字符大写.进行了其他案例更改以使成员名称更易于阅读.

为了解决这个问题,我订了

SourceMemberNameTransformer = name => name.Replace("_", "").ToUpper()
DestinationMemberNameTransformer = name => name.ToUpper()
Run Code Online (Sandbox Code Playgroud)

编辑3

为来自未来的人们提供更多信息.

我检查了消息来源,看看INamingConvention是如何使用的.它的设计方式有点误导.界面定义为

public interface INamingConvention
{
    Regex SplittingExpression { get; }
    string SeparatorCharacter { get; }
}
Run Code Online (Sandbox Code Playgroud)

但是,AutoMapper不会为两者SourceMemberNamingConvention和用户提供接口的完整定义DestinationMemberNamingConvention

它采用目标类型的每个成员并应用DestinationMemberNamingConvention.SplittingExpression.然后,它需要的匹配部分,并呼吁string.Join使用SourceMemberNamingConvention.SeparatorCharacter.然后,它尝试将源类型成员与目标类型成员进行匹配.

这是一个非常高级别的概述,它的作用是什么,而不是试图描述完整的功能.它仅仅是为了展示如何INamingConvention使用和显示它SourceMemberNamingConvention.SplittingExpression并且DestinationMemberNamingConvention.SeparatorCharacter从未使用过.

如果您无法使用此策略转换目标成员,则必须手动将属性映射为nemesv的答案建议.

.net c# automapper

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

链接服务器和实体框架代码优先的DateTime参数问题

我在两台服务器上有两个数据库.我的应用程序主要在server1上使用db1.但是,有一个表我只会在server2上的db2中读取.

我们创建了一个链接服务器,并在db1中为该表设置了一个同义词,而不是为db2创建一个新的DbContext.我在db1 Code First Context中为此设置了映射.这似乎工作,我可以检索数据.

但是,如果我在谓词中使用任何日期,则会收到以下错误:

A failure occurred while giving parameter information to OLE DB provider "SQLNCLI10" for linked server "server2".

我的映射看起来像这样:

ToTable("synonym");

Property(t => t.Id).HasColumnName("ID");
Property(t => t.Company).HasColumnName("Company");
Property(t => t.StartDate).HasColumnName("StartDate");
Property(t => t.EndDate).HasColumnName("EndDate");
Property(t => t.LastUpdatedDate).HasColumnName("LastUpdatedDate");
Property(t => t.LastUpdatedBy).HasColumnName("LastUpdatedBy");
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行以下查询:

_context.Set<Synonym>()
    .Any(s => s.Company == company
            && s.StartDate <= date
            && (s.EndDate >= date || s.EndDate == null));
Run Code Online (Sandbox Code Playgroud)

如果我删除日期,查询运行正常.

server1是SQL 2008
server2是SQL 2005

我发现这个帖子表明日期存在某种问题,但我无法弄清楚如何将其应用于Entity Framework.

sql-server entity-framework

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

Apache CLI 中的参数与选项

我正在尝试将 Apache CLI 用于我的一个应用程序,该应用程序具有必需的参数和选项。对于所需的参数,我不想有任何选项说明符(没有连字符)。所以我正在寻找这样的东西

application requiredArgument, -opt1 optionalArg1, -opt2 optionalArg2
Run Code Online (Sandbox Code Playgroud)

有什么办法可以实现这一点吗?或者还有其他可以使用的解析器吗?

apache command-line-interface

5
推荐指数
0
解决办法
253
查看次数

获取列表项的特定范围(LINQ)

我有这个我正在使用的代码块:

// get the collection of librarys from the injected repository
librarySearchResults = _librarySearchRepository.GetLibraries(searchTerm);

// map the collection into a collection of LibrarySearchResultsViewModel view models
libraryModel.LibrarySearchResults =
    librarySearchResults.Select(
        library =>
        new LibrarySearchResultsViewModel
        {
            Name = library.Name,
            Consortium = library.Consortium,
            Distance = library.Distance,
            NavigateUrl = _librarySearchRepository.GetUrlFromBranchId(library.BranchID),
            BranchID = library.BranchID
        }).ToList();
Run Code Online (Sandbox Code Playgroud)

所有这一切都是取结果GetLibraries(searchTerm),返回一个LibrarySearchResult对象列表,并将它们映射到一个列表LibrarySearchResultsViewModel.

虽然这适用于小型结果集,但一旦我进入1000,它真的开始拖动,在完成转换之前大约需要12秒.

我的问题 :

由于我在这里使用分页,我实际上只需要显示在大型结果集中返回的一小部分数据.有没有利用类似的方式Take()或者GetRange(),这样的转换仅发生于我需要显示的记录?在1,000条记录中,我只想获取20到40条记录,并将它们转换为视图模型.

我也是关于改进或重构此代码的任何建议.

c# linq

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

尝试获取集合中的第一个项目返回NULL

我之前使用Stored Procs进行了大量的开发来进行所有数据修改.

但我现在需要使用LINQ To SQL,而基本的基本任务让我感到难过.

我有一个名为Book(Title,Author等)的课程.许多书籍被实例化并添加到公共ObservableCollection书籍中

到目前为止一切顺利,我可以看到它在其藏品中保存了有效的书籍.

我有一个函数DeleteOldestBook(),它只是获取书籍中的第一本书,并删除.这是我遇到麻烦的地方.

我尝试选择

Book BookToDelete = Books.Take(1) as Book;
Run Code Online (Sandbox Code Playgroud)

但它总是返回NULL.

我做了一个hacky解决方法:

var AllBooks = from BookToDelete in Books select BookToDelete;
foreach (Book BookToDelete in AllBooks)
{ 
    //  BookToDelete.dostuff takes place ... 
    break; // only do 1
}
Run Code Online (Sandbox Code Playgroud)

但这太糟糕了,我知道我错过了一些简单的东西.

LINQ专家的任何想法?如果您需要更多代码,请告诉我们.

提前致谢

c# linq linq-to-sql

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

当filter参数为null时绕过WHERE子句

我有一个过程,需要绕过输入为null的WHERE子句.

请找到以下条件.

CREATE PROCEDURE [dbo].[spPERSON_SELECT]    
(
@PersonID INT = NULL,
@OrganizationID INT = NULL,
@ManagerID INT = NULL 
)
AS

BEGIN
SELECT PERSON.name, ORGANIZATION.name,PERSON.manager 
FROM PERSON 
    INNER JOIN ORGANIZATION 
        ON PERSON.person_id = ORGANIZATION.person_id    
WHERE PERSON.person_id = @PersonID  
    and ORGANIZATION.organization_id = @OrganizationID  
    and PERSON.manager_id = @ManagerID 

END
GO
Run Code Online (Sandbox Code Playgroud)

Iam面临一个问题,而输入为null,在这种情况下需要避免where条件.

例:

如果@PersonID为null,那么我的select查询需要以下结构:

SELECT PERSON.name, ORGANIZATION.name,PERSON.manager 
FROM PERSON 
    INNER JOIN ORGANIZATION 
        ON PERSON.person_id = ORGANIZATION.person_id    
WHERE ORGANIZATION.organization_id = @OrganizationID
    and PERSON.manager_id = @ManagerID 
Run Code Online (Sandbox Code Playgroud)

我想避免动态查询.

sql sql-server sql-server-2008

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

可观察的收集问题

我有一个像下面给出的类/结构

public class FileDetails {public FileDetails(){}

    public PrintFile PrintFileDetails { get; set; }
    public Boolean IsSelected { get; set; }
    public DateTime UploadTime { get; set; }
    public long FileSize { get; set; }
    public UploadTypes TypeOfUpload { get; set; }
    public DateTime DownloadStartTime {get;set;}
    public DateTime DownloadEndTime {get;set;}
    public bool ShouldDownload{get;set;}

}
Run Code Online (Sandbox Code Playgroud)

在上面的片段PrintFile中定义了XSD.我打算在一个内部部署这个结构ObservableConnection.如果我实施NotifypropertychangedFileDetails将下面的项目PrintFileDetails也能够获益INotifypropertychanged.我相信我无法实现,INotifyPropertyChanged因为它与其他程序员共享.

.net c# inotifypropertychanged

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

DateDiff每3天一次

我想知道你是否知道如何在做调度程序时每3天做一次差异.

SELECT DISTINCT 
    CLAIM_NO,
    ModifiedBy,
    ClaimType,
    ClaimStatus,
    EmailAddress,
FROM EP_ADMIN_ITEM_REMINDER
WHERE Status = 1 AND DATEDIFF(Day,DateAdded,getdate()) = 3
Run Code Online (Sandbox Code Playgroud)

这是我在DATEDIFF中的代码我放入WHERE子句我有2列为date 1st DateAdded 2nd DateSent.我需要每3天安排一次我的事情,所以它会先更新datesent,它会检查datesent是否为Greterthan dateadded为3.我只想知道我的WHERE条款是否正确.谢谢

sql vb.net sql-server

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

如何更改TextBox的背景颜色?

我正在研究WPF,我想改变背景---文本框的颜色(txtStatus.Background = white),但是它给出了ERROR.我的代码是:

public Window2()
            {
                InitializeComponent();
                txtStatus.Text = "Current Operation: NULL";
                txtStatus.Background= white
            }
Run Code Online (Sandbox Code Playgroud)

.net c# wpf

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

如何"ToString"大量的字符数组?

我有以下代码:

public static void PrependEntitiesToFile(string pathToFile)
{
    char[] buffer = new char[10000];
    FileInfo file = new FileInfo(pathToFile);

    string renamedFile = file.FullName + ".orig";
    System.IO.File.Move(file.FullName, renamedFile);

    using (StreamReader sr = new StreamReader(renamedFile))
    using (StreamWriter sw = new StreamWriter(file.FullName, false))
    {
        string entityDeclaration = "foo";
        sw.Write(entityDeclaration);
        string strFileContents = string.Empty;
        int read;
        while ((read = sr.Read(buffer, 0, buffer.Length)) > 0)
        {
            for (int i = 0; i < buffer.Length; i++)
            {
                strFileContents += buffer[i].ToString();
            }
        }
        sw.Write(strFileContents, 0, strFileContents.Length);

    }

    System.IO.File.Delete(renamedFile);
} …
Run Code Online (Sandbox Code Playgroud)

c#

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

在运行时创建对象

有没有办法在运行时在c#中创建对象?

为简单起见,假设以下问题..如果我有这个类..

class student {
string name;
int ID;} 
Run Code Online (Sandbox Code Playgroud)

假设我正在编写一个程序,从用户那里获取学生人数(例如15),然后程序应该从学生班创建15个对象,并要求用户填写每个学生的姓名和ID.

我想知道的是如何在运行时创建对象?

c# runtime object

-2
推荐指数
1
解决办法
2250
查看次数

更改array []运算符返回的类的值

问题是:在这段代码的末尾,ptArray [0] .X的值是3.33还是1.11?

谢谢.

class MyPoint
{

  public double X, Y;

  public MyPoint(double x, double y)
  {
     X = x;
     Y = y;
  }
}

MyPoint[] ptArray = new MyPoint[2];

ptArray[0] = new MyPoint(1.11, 2.22);

MyPoint first = ptArray[0];

// Am I changing ptArray[0] here or not?
first.X = 3.33;
first.Y = 4.44;
Run Code Online (Sandbox Code Playgroud)

.net c#

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