Click here to Skip to main content
15,888,046 members
Home / Discussions / Design and Architecture
   

Design and Architecture

 
QuestionPython: how doI "select / switch in" a module/class to use at runtime Pin
ninjaef3-Jul-18 0:09
ninjaef3-Jul-18 0:09 
AnswerRe: Python: how doI "select / switch in" a module/class to use at runtime Pin
Richard MacCutchan3-Jul-18 2:13
mveRichard MacCutchan3-Jul-18 2:13 
GeneralRe: Python: how doI "select / switch in" a module/class to use at runtime Pin
ninjaef3-Jul-18 3:24
ninjaef3-Jul-18 3:24 
GeneralRe: Python: how doI "select / switch in" a module/class to use at runtime Pin
Richard MacCutchan3-Jul-18 4:26
mveRichard MacCutchan3-Jul-18 4:26 
GeneralRe: Python: how doI "select / switch in" a module/class to use at runtime Pin
ninjaef3-Jul-18 7:14
ninjaef3-Jul-18 7:14 
GeneralRe: Python: how doI "select / switch in" a module/class to use at runtime Pin
Richard MacCutchan3-Jul-18 8:25
mveRichard MacCutchan3-Jul-18 8:25 
QuestionMy Entity Framework Design Pin
Kevin Marois2-Jul-18 7:14
professionalKevin Marois2-Jul-18 7:14 
AnswerRe: My Entity Framework Design Pin
Richard Deeming2-Jul-18 8:17
mveRichard Deeming2-Jul-18 8:17 
Kevin Marois wrote:
var test = projectRepo.FindProjectsByName(entity.ProjectName);

if (test != null)
{
    projectRepo.Add(entity);

    foreach (var task in entity.Tasks)
    {
        projectTaskRepo.Add(task);
    }

    dc.SaveChanges();
}
else
{
    throw new DuplicateProjectException(entity.ProjectName);
}

If you've implemented it properly, FindProjectsByName will never return null.

It would also be very odd for that method to return null if there were matching projects, and not-null if there weren't.

Perhaps you mean something more like:
C#
var test = projectRepo.FindProjectsByName(entity.ProjectName);
if (test.Any()) throw new DuplicateProjectException(entity.ProjectName);

projectRepo.Add(entity);

foreach (var task in entity.Tasks)
{
    projectTaskRepo.Add(task);
}

dc.SaveChanges();


Kevin Marois wrote:
IEnumerable<TEntity> GetAll();
IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> predicate);

Purists frown on it, but I generally think it makes more sense to return IQueryable from methods like this. Otherwise, you end up having to provide overloads for every possible combination of operations you need to use - sorting, paging, searching, etc.

The objection is usually that returning IQueryable lets the code that uses the repository turn a simple query into something heavy and convoluted, which degrades the performance. But returning IEnumerable involves loading the entire table into memory, which could also degrade the performance. And if you're using lazy-loading, you could still end up with the "Select N+1" problem, where accessing a property on the returned object issues a new database call.



"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer

GeneralRe: My Entity Framework Design Pin
Kevin Marois2-Jul-18 8:30
professionalKevin Marois2-Jul-18 8:30 
GeneralRe: My Entity Framework Design Pin
Richard Deeming2-Jul-18 9:00
mveRichard Deeming2-Jul-18 9:00 
GeneralRe: My Entity Framework Design Pin
Kevin Marois2-Jul-18 10:15
professionalKevin Marois2-Jul-18 10:15 
GeneralRe: My Entity Framework Design Pin
Kevin Marois4-Jul-18 17:33
professionalKevin Marois4-Jul-18 17:33 
GeneralRe: My Entity Framework Design Pin
Richard Deeming5-Jul-18 1:27
mveRichard Deeming5-Jul-18 1:27 
GeneralRe: My Entity Framework Design Pin
Kevin Marois9-Jul-18 6:17
professionalKevin Marois9-Jul-18 6:17 
GeneralRe: My Entity Framework Design Pin
Kevin Marois9-Jul-18 6:19
professionalKevin Marois9-Jul-18 6:19 
GeneralRe: My Entity Framework Design Pin
Richard Deeming9-Jul-18 8:20
mveRichard Deeming9-Jul-18 8:20 
GeneralRe: My Entity Framework Design Pin
Kevin Marois16-Jul-18 6:28
professionalKevin Marois16-Jul-18 6:28 
GeneralRe: My Entity Framework Design Pin
Richard Deeming16-Jul-18 8:16
mveRichard Deeming16-Jul-18 8:16 
QuestionEntity Framework Question Pin
Kevin Marois29-Jun-18 9:31
professionalKevin Marois29-Jun-18 9:31 
AnswerRe: Entity Framework Question Pin
Richard Deeming29-Jun-18 10:02
mveRichard Deeming29-Jun-18 10:02 
AnswerRe: Entity Framework Question Pin
Gerry Schmitz29-Jun-18 11:01
mveGerry Schmitz29-Jun-18 11:01 
GeneralRe: Entity Framework Question Pin
Kevin Marois29-Jun-18 11:26
professionalKevin Marois29-Jun-18 11:26 
GeneralRe: Entity Framework Question Pin
Gerry Schmitz29-Jun-18 11:59
mveGerry Schmitz29-Jun-18 11:59 
AnswerRe: Entity Framework Question Pin
jschell30-Jun-18 5:35
jschell30-Jun-18 5:35 
AnswerRe: Entity Framework Question Pin
Mycroft Holmes30-Jun-18 13:23
professionalMycroft Holmes30-Jun-18 13:23 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.