What Is The Alternative, Using POCO Classes In Combination With For Example AutoMapper
Sep 30, 2010
Currently im using EF and using its datacontext directly in all of my actions, but since i started reading about loose coupling and testability im thinking that thats not the best way to go. Im trying to understand all the pro's and con's before i start refactor all my current code.
Problem 1:
Considering that every entity needs its own repository, and thus has to setup its own connection to a datasource (lets assume a database using EF), wouldnt that give alot of overhead if i need data from 5 different entities on a single page?
Problem 2:
What im seeing aswell in all the examples which i found online is that most people (even people like shanselman) implement the repository pattern using the entity classes which are generated by either LINQ or EF, doesn't this defeat the purpose of repository pattern with regards to loose coupling? On the other hand, what is the alternative, using POCO classes in combination with for example AutoMapper? (this scares me a little) Im hoping that a few people can shed some light on this, because im a bit confused at the moment if the repository pattern is the right choice for a website.
I need to create an ASP.net page that has a control on the page that has a five-level TreeView on the left side of the page, and accounting balances on the right side the coincide with each breakdown in the tree. Top level is company, next is group, next is program, etc... and the balances break down accordingly.
I've seen that there are controls out there such as TreeView/ListView combination controls that can do this. Is there any tutorials or out there on how to go about accomplishing this without paying for controls? Could a treeview do this alone by spanning data across the entire length of the columns since every level will have totals on it?
So I used this tutorial to generate my poco classes which I am to use throughout my aplication.. the problem is that Im not supposed to modify the generated cs files cause they get autoregenerated... How do I add attributes like [Required] and stuff like that??
I am new to LINQ. when we drag tables we get a dbml file and designer file.
For example DataClasses1.dbml and DataClasses1.designer.cs.
Once we have them then we can start using our LINQ Queries.
In my company project I do not see this designer files and instead there are .tt files which were used as templates to greate ABC.generated.cs files. Is this same as designer class?
I am following the Nerd Dinner tutorial as I'm learning ASP.NET MVC, and I am currently on Step 3: Building the Model. One part of this section discusses how to integrate validation and business rule logic with the model classes. All this makes perfect sense. However, in the case of this source code, the author only validates one class: Dinner.
What I am wondering is, say I have multiple classes that need validation (Dinner, Guest, etc). It doesn't seem smart to me to repeatedly write these two methods in the partial class:
[code]....
This doesn't "feel" right, but I wanted to check with SO to get opinions of individuals smarter than me on this. I also tested it out, and it seems that the partial keyword on the OnValidate method is causing problems (understandably so). This doesn't seem possible to fix (but I could very well be wrong).
This may be a little more up the alley of our mvc fellows, but regardless.
First, I have the following model:
Csharp Code:
[code]....
Notes: RenderPartials is a custom extension method and that part works, as do the actual views. The correct data is displayed. Just not in the expected order. In fact, it mirrors the database.
I don't know if this has to do with how FindControl works or how scope works. But my base class is having a hard time seeing the fields of child classes. Currently I'm planning have the derived class set a property in the base class, but there are a lot of derived classes, so that isn't a very attractive solution.
Can it handle mapping using private members like NHibernate can? The documentation is very slim, but it seems like one of the objects or methods provided with the tool could do something like this.
I'm trying to figure out the best approach to architecting this project. Basically, it's a "band" profile site. I'm using ASP.NET 4, EF, and Automapper (structuremap too, but that's not important). I'm running into performance issues I have a EntityFramework repository class that interacts directly onto the EF objects using LINQ:
[Pluggable("Repository")] public class EntityDataRepository : IRepository static EntityDataRepository() // other mappings removed // Data. objects are EF objects, mapping to my DTO classes [code]...
Is it possible with automapper in C# to map the properties of an object to an array/dictionary? I have tried the following:
Mapper.CreateMap<FFCLeads.Models.FFCLead, Dictionary<string, SqlParameter>>() .ForMember(d => d["LeadID"], o => o.MapFrom(s => new SqlParameter("LeadID", s.LeadID))) .ForMember(d => d["LastName"], o => o.MapFrom(s => new SqlParameter("LastName", s.LastName)));
However, it does not work (object ref not set to an instance). Basically, I'm trying to make the values of this object to an array of SqlParameter objects. Possible? If so, what is the correct way to do this?
I am using EF4 with POCO entities and having problems to update an existing item. In a webbapp I have an ajax function fetching an entity object from the database through EF4. Then i make some changes to it and when I try to update the record in the database I call the Attach-method but it is not saved. I guess this has something do with that I am not in the same context anymore...so my question is how to make an update of a previously fetched record if the context which was used to fetch record is disposed?
I need to know is there any way to separate the classes automatically created by Entity framework. I can not use POCO template. because I have restriction to use framework 4.0 for time being.
In EF4, is it possible to convert a POCO object (created using new MyObject()) to a Dynamic Proxy (like you would get with ObjectContext.CreateObject())?
I was wondering if it is possible to map multiple DTO objects to a single ViewModel object using Automapper?
Essentially, I have multiple DTO objects and would like to display information from each on a single screen in ASP.NET MVC 2.0. To do so I would like to flatten the DTO objects (or parts of them...) into the Viewmodel and pass said viewmodel to the view. If I had one DTO this would be easy, but I've never seen it being done with multiple. Obviously there are a number of roundabout ways to do this (outside of automapper), but this is the approach that I would like to take if possible.
I have an interesting problem with a WCF Service I am creating. As background fodder my solultion uses MVC 3 RC2 as the web interface. I am developing the solution as an N-Tier application using the Entity Framework 4.0 with POCO Self Tracking Entities, repository and unit of work approach. I am using the STE's more as an advanced POCO since STE do not seem to play well as of yet in the real world as they were meant to and since they do seem to give me better interfacing with the DB through my layers still. Additionally, I am incorporating WCF into the solution as the backend for the models based on info I am reading and the fact that I will need to also access these services via a windows service app on the client computers.
So, I have a datastore which includes my edm and the repositories. The POCO STEs are generated in a separate layer in what I have called my Domain Models. Within my domain area I also have a Core app holding my utilities. I am currently incorporating an additional domain element as a WCF service using the RESTful template. This WCF will be servicing both my MVC controllers and a Windows Service app on the client computers.
Now, on to the problem: Within this solution I have an Entity Set of People (or Person?). Within that Entity set I have a chain of inherited entities as follows Person->User->StaffMember->Provider where Provider is the resultant child. Within my WCF I have a ProviderService, a StaffMemberService and a UserService. In each of these Services one of my OperationContracts is a Get(string id) amongst others. the Get(String id) contract is the one that is causing me problems. Within that Get(String id) contract I do the following for the User:
[Code]....
and for the Provider:
[Code]....
Now, what has gotten me completely confused is that the Provider one works like a charm. But if I use the UserService to call the User of the same Id (Since User is a base class for Provider, this should work) I get an error saying it was a bad service call. (The ProviderService, as stated works and returns all the correct data). When I debug it, the UserService Get(String id) function actually works as expected up to and through the return statement (ie the user variable actually contains all the proper data that I would expect on the call). It is only after the return that I get the web page giving me that error and points me to the help page for the service. (I am using the browser to view the results at this point only). </P><P>I am assuming it has something to do with serialization? But why is it displaying the derived class with all expected data, which yes does include the data not being displayed as a user data, I am calling the data using the same UserId. I am not expecting someone to inspect my code, but to be a traffic cop and point me in the direction I need to look.
I have POCO's in a separate project and now I need Self Tracking Entities. Does anyone know if I need to generate new POCO's that are self tracking and they will replace my current POCO's? Or, do I setup self tracking entities in addition to my current POCO's?
This is pretty much the same error I got when trying to use the entity object directly as model, rather than having AutoMapper create a ViewModel. So what am I doing wrong? This is driving me crazy...
UPDATE 3:Well, neverending story... I found some info on using UseDestinationValue on the CreateMap method in AutoMapper. So I tried that, and well, that actually got me a bit further. But...now I get a new exception on SaveChanges() (in the EF model). The exception now is: "The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable." This appears to be an exception that also occurs when trying to delete child objects in a one-to-many relationship if you don't have cascade delete set, but that's not what I'm trying to do here...
Here's the updated CreateMap methods:Mapper.CreateMap<ConsultantViewModel, Consultant>().ForMember("Id", opts => opts.Ignore()).ForMember( x => x.Programs, opts => opts.UseDestinationValue()); Mapper.CreateMap<Consultant, ConsultantViewModel>();
I want to assign Guid to UserId of my UserDTO if UserId is Null. Is it possible to do this in the CreateMap or creating any formatter?. I am using automapper as an attribute on my Actions in controller.
I'm curious as to what people consider better practice, between duplicating model structure in the view model and using a mapping tool to move data between the two, or aggregate the model inside the view model, i.e. have a property on the view model class that is a reference to the actual model. Which is considered a better approach in general?
I am looking for a solid tutorial on using the Entity Framework with POCO (ie. not using the designer) using MySQL as the back-end. I am looking for something that is semi-in-depth covering stuff like attributes (like how to map a database table/field name to a class/field name that is different). Also I am looking for C#, not VB. Does anyone know of any such tutorials?
I have a Consumer class and a BillableConsumer : Consumer class. When trying to do any operation on my "Consumers" set, I get the error message "Object mapping could not be found for Type with identity Models.BillableConsumer.
From the CSDL:
[code]....
Is this because I did not specifically add the BillableConsumer entity to the object set? How do I do that in a POCO scenario?
I am using AUtomapper which I am very impressed with however, I have a complex object with many nested collections. I'm using Telerik OpenAccess and it returns the 1400 records fast but when I pass it to Automapper and it slows to a ridiculous crawl. Here is my code for reference: