Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

Rowan Miller

Rowan Miller romiller

Niner since 2012

  • Shadow Properties in Entity Framework 7
  • Key Generation Strategies in Entity Framework 7
  • Alternate Keys in Entity Framework 7
  • SQL Generation Improvements in Entity Framework 7
  • The future of Entity Framework (EF7)
  • An Introduction to Entity Framework with Rowan Miller
  • Code First to Existing Database (EF6.1 Onwards)
  • Migrations - Existing Databases
  • Migrations - Team Environments
  • Migrations - Under the Hood
  • An Introduction to Entity Framework with Rowan Miller

    @Jose Cardenas - EF7 video is at https://channel9.msdn.com/Blogs/Seth-Juarez/The-future-of-Entity-Framework-EF7

  • The future of Entity Framework (EF7)


    Not to mention it will probably be awhile before other vendors release providers for EF 7. I haven't heard anything about a MySQL driver.
    We are working with various provider writers so that providers will be available ASAP. Many will have them at the same time as EF7 reaches RTM. I can't comment on the specifics of MySQL - their site would be a good place to ask that question (http://dev.mysql.com/).

    I also think it's weird that ASP.NET 5 apps default to EF 7.

    Weird because you think it should use EF6? Or weird because you think it should use a different data access technology?

    And why is it called Beta if the feature set isn't done.

    As Erik mentioned, this is just a by-product of being tied to ASP.NET 5 releases. I agree, we should have called it Alpha up until the most recent releases. We just didn't think about this enough.
  • The future of Entity Framework (EF7)

    @Suave - Public roadmap is available here https://github.com/aspnet/EntityFramework/wiki/Roadmap (it includes dates).
    @aL3891 - It was a complicated decision, we could have gone either way. Here is post that walks though our though process on calling it EF7 rather than a new name http://blogs.msdn.com/b/adonet/archive/2014/10/27/ef7-v1-or-v7.aspx. I still go back and forwards on what we should have done, bottom line is that I think calling it EF7 will be more confusing for near future and better for the long term.
    @ace2610 - Yes, we are working on perfomance in EF7. Some scenarios are already significantly faster than EF6, others we are still working on improving.
  • Alternate Keys in Entity Framework 7

    @br1 - We'll be starting work on cascade delete support shortly, so I'll keep your feedback in mind when we design it.

  • Alternate Keys in Entity Framework 7

    @ojorma - At the moment we only have the [Key] annotation for defining primary keys... but that's a good suggestion, an [AlternateKey] annotation would be useful.

  • Key Generation Strategies in Entity Framework 7

    @SonOfSam - The pools of IDs are actually shared at the AppDomain level (or ServiceProvider level if you are managing your own DI). So if you have 4 pools with 10 values each then the requests will cycle through the pools and all values get used (with the pools reaching out to the database for the next value when needed). Of course, when the AppDomain ends (web application is restarted etc.) then you will end up losing whatever values are left in each pool.
    @RichardD3 - Yes you can also set it individually on the properties that you want to use this strategy. There are overloads of both the property level and model level APIs that allow you to specify which sequence to use.
    @Gabriel Lamounier - In a very pure definition of HiLo you are probably correct. But reserving a high number from a central source (in this case a database sequence) and then being free to use all the numbers within the block bounded by the high number is representative of the pattern.
  • Key Generation Strategies in Entity Framework 7

    fbehrens (cc @voroninp @SonOfSam @dcga @jambone @mrtaikandimrtaikandi)
    By default in EF7, if you add an entity with a GUID primary key and it has not value set (i.e. it's set to the default GUID) then EF will use a client side version of the NEWSEQUENTIALID algorithm to generate values for you.
  • Shadow Properties in Entity Framework 7

    , andriysavin wrote

    I'm wondering, can this feature be used to move "row version" property out of a domain model?

    Yes, that would be a perfect scenario for this feature.

  • SQL Generation Improvements in Entity Framework 7

    @Piotr Spikowski & @br1 - Agreed that excessive client evaluation is a concern. We will be logging warnings in some cases where we know it's probably not what you want (i.e. filtering on the client). We are also going to add a flag to completely disable client eval (tracked by https://github.com/aspnet/EntityFramework/issues/1856).


    @eersonmez – Yes these are valid suggestions. What we have at the moment is already a significant improvement over EF6 and we may look at further improvements (such as multiple result sets on the same query) in the future.


    @Clement – It's possible it could take more time if latency is very high and the data set is very small. But in reality the reduction in the amount of data being sent over the wire should outweigh this.


    @voroninp – Yes, multiple result sets is a possible improvement we will look at. Compared to EF6 though, your 100 includes would have resulted in a query with 100 JOINs in it... it may not be optimal but at least the EF7 version is going to run :) (and 100 joins is probably not a real world scenario).


    @SimoneInvernizzi – Yes, it still works the same - the thread will be freed up while .NET code is waiting on the database (possibly multiple times).


    @akamud – It's different from .Collection() because that would load the related objects for a single entity in a query. This loads the data for all related entities in a single query (i.e. Blogs.Include(b => b.Posts).ToList() with 1000 blogs each with 100 posts still only results in 2 queries).

  • Modern Data Applications with Entity Framework 7

    Here are the links mentioned during the session.

See more comments…