Tag: mapping

AutoMapper:ForMember()和ForPath()有什么区别?

对不起我的英文 我正在阅读AutoMapper的ReverseMap() ,无法理解ForMember()和ForPath()之间的区别。 在我用ForMember()实现的经验中描述了实现。 例如,在我配置反向映射的代码之后: public class Customer { public string Surname { get; set; } public string Name { get; set; } public int Age { get; set; } } public class CustomerDto { public string CustomerName { get; set; } public int Age { get; set; } } static void Main(string[] args) { […]

AutoMapper通用映射

我已经在StackOverflow上搜索并搜索了它,但我还没有找到任何帮助或建议。 我有一个像下面这样的类创建一个PagedList对象,并使用AutoMappper将类型从源映射到目标 public class PagedList { protected readonly List _items = new List(); public IEnumerable Items { get { return this._items; } } } 我想为这种类型创建一个Map,它应该将它转换为另一种类型,如下所示 public class PagedListViewModel { public IEnumerable Items { get; set; } } 我试过了 Mapper.CreateMap<PagedList, PagedListViewModel>(); 但编译器因TSrc和TDest而TDest 有什么建议吗?

entity framework代码第一个铸造列

我上课了 public class Foo { public int UserId { get; set; } } 我正在使用代码第一个流畅的映射将其映射到数据库。 Property(i => i.UserId) .HasColumnName(“userno”); 唯一的问题是userno实际上是数据库中的char(10)。 我如何进行铸造或转换此类型? 因为我目前得到这个错误。 ‘Foo’上的’UserId’属性无法设置为’String’值。 您必须将此属性设置为“Int32”类型的非null值。 谢谢

如果Items等效,则将项目从一个类映射到另一个类

假设我有一个看起来像这样的class : public class Person { public string Name {get; set;} public int Number {get; set;} } 而另一个看起来像这样: public class Dog { public string Name {get; set;} public int Number {get; set;} } 它们是两个不同的类,但它们碰巧具有完全相同的元素(一个名为Name的字符串和一个名为Number的int) 有没有一种简单的方法在C#中,比方说,如果我有一个Person实例,然后创建一个具有相同Name和Number的Dog实例? 例如,如果我有: Person person = new Person(); person.Name = “George”; person.Number = 1; 我知道我不能简单地去: Dog dog = person; 因为它们是两种不同的类型。 但是在C#中是否有办法检查“哦,如果它们具有相同的元素,则将Dog的相同元素设置为与Person 。但我觉得必须有一种比执行类似操作更简单的方法: […]

Automapper将小数设置为2位小数

我想使用AutoMapper链接我的两个对象。 它运行良好,但现在我想将我的小数项格式化为全数字到2位小数。 这就是我所拥有的。 我究竟做错了什么? Mapper.CreateMap() .ForMember(x => typeof(decimal), x => x.AddFormatter()); 这是RoundDecimalTwo格式化程序 public class RoundDecimalTwo : IValueFormatter { public string FormatValue(ResolutionContext context) { return Math.Round((decimal)context.SourceValue,2).ToString(); } }

在不同类型上映射/转换Linq-to-Sql的问题

也许有人可以帮忙。 我想要映射Linq-Class不同的数据类型。 这是有效的: private System.Nullable _deleted = 1; [Column(Storage = “_deleted”, Name = “deleted”, DbType = “SmallInt”, CanBeNull = true)] public System.Nullable deleted { get { return this._deleted; } set { this._deleted = value; } } 当然可以。 但是当我想为布尔值放置一些逻辑时没有,像这样: private System.Nullable _deleted = 1; [Column(Storage = “_deleted”, Name = “deleted”, DbType = “SmallInt”, CanBeNull = true)] […]

如何阻止ValueInjecter映射空值?

我正在使用ValueInjecter来映射两个相同的对象。 我遇到的问题是ValueInjector从我的源上复制了我的目标的空值。 所以我将大量数据丢失为null值。 这是我的对象的一个​​例子,有时只填写了一半,导致其空值覆盖目标对象。 public class MyObject() { public int ID { get; set; } public string Name { get; set; } public virtual ICollection OtherObjects { get; set; } } to.InjectFrom(from);

对象关系映射

我需要将复杂数据类型的实例存储到关系数据库中。 有没有办法在没有首先修改数据库结构的情况下执行此操作,就像在ado.net中完成一样? 应该从类结构创建数据库(或表)结构。 该类有一些属性,如整数,字符串或bool,但也可能有更复杂的属性。 我很感激每一个帮助建议…… 我想在c#中这样做… 更新: 谢谢你的回复。 我尝试了EF 4的“代码优先”(非常感谢Ramesh)并将我的对象放入数据库。 但是现在我遇到了将数据从数据库中取回到对象实例的问题。 我的课程看起来像这样: class Foo { public int id { get; set; } public string Woot { get; set; } } class Bar { public int id { get; set; } public string name { get; set; } public ICollection FooList { get; set; } } […]

entity framework以一对多替换集合的正确方法

假设客户有许多电话号码,而电话号码只有一个客户。 public class PhoneNumber : IValueObject { public string Number {get; set;} public string Type {get; set;} } public class Customer : IEntity { public ICollection phones {get; private set;} //ew at no encapsulated collection support public void SetPhones(params PhoneNumber[] phones) { this.phones.Clear(); this.phones.AddRange(phones); } } 如果我像这样进行EF映射并运行它,每次我设置电话号码时,它将创建新的PhoneNumbers但不删除旧的。 没有其他实体引用电话号码,我甚至没有在我的dbcontext上公开它,有没有办法告诉EF Customer完全拥有PhoneNumbers ,因此如果从集合中删除了电话号码,他们应该被删除? 我意识到有十几种方法来解决这个问题,但这不是一个奇怪的边缘情况,处理这个问题的“正确”方法是什么。

使用Dapper映射SqlGeography

我有实体“点”,包含Id,文本和地理坐标。 CREATE TABLE [Point] ( [Id] INT IDENTITY CONSTRAINT [PK_Point_Id] PRIMARY KEY, [Coords] GEOGRAPHY NOT NULL, [Text] NVARCHAR(32) NOT NULL, [CreationDate] DATETIME NOT NULL, [IsDeleted] BIT NOT NULL DEFAULT(0) ) CREATE PROCEDURE [InsertPoint] @text NVARCHAR(MAX), @coords GEOGRAPHY AS BEGIN INSERT INTO [Point](Text, Coords, CreationDate) VALUES(@text, @coords, GETUTCDATE()) SELECT * FROM [Point] WHERE [Id] = SCOPE_IDENTITY() […]