Comments (10)
Hello @smasherprog ,
I'm not sure if you can do it or not but on way to do it is by removing the DatabaseGeneratedOption
when effort is used such as:
public class EntityDbContext : DbContext
{
public bool IsEffort = false;
public EntityDbContext(DbConnection dbConnection) : base(dbConnection, false)
{
IsEffort = dbConnection is EffortConnection;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
if(IsEffort)
{
modelBuilder.Entity<Test>().Property(x => x.MyProperty).HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
}
base.OnModelCreating(modelBuilder);
}
public virtual DbSet<Test> Tests { get; set; }
}
Then you can treat this column like a normal column in your unit test.
Is it a solution that could work for you?
Best Regards,
Jon
from entityframework-effort.
Overriding OnModelCreating is pointless in a database-first application because OnModelCreating is never called. If it works for you great, but I can't see any way that would work unless you are using a code-first approach.
I am asking for a different workaround because the one already presented does not work for me with my database-first application. So respectfully, if you do not have anything new to add to the conversion, please just leave it at that and let someone else answer.
from entityframework-effort.
Hmm thats an actually decent work around.. Awesome thanks for this!
from entityframework-effort.
I would similarly like to be able to write C# code to define behaviour of a generated column when using Effort. Is there any workaround for this which can be applied to database-first EF programs?
from entityframework-effort.
He posted the answer above. Its works Great
from entityframework-effort.
you can add a c# trigger by overriding the savechanges and using changetracker
from entityframework-effort.
The answer posted above is for a code-first application. OnModelCreating is never called in a database-first application so you cannot disable the DatabaseGeneratedOption that way.
from entityframework-effort.
id say give it a shot. it works for me
from entityframework-effort.
I crreated a new TestFakeClass that derives from my Production context. Then override the OnModelCreating to add the code to remove the HasDatabaseGeneratedOption(DatabaseGeneratedOption.None)
Then if you need those columns to be computed like the database does via triggers, you just override the savechanges and use ChangeTracker to find the things that are changing and update the columns appropriately. It works really well and im very happy with the above answer for all of my Integration tests.
from entityframework-effort.
You can make a fully in-memory context that behaves exactly like a real Database.
from entityframework-effort.
Related Issues (20)
- EffortConnection.RollbackToRestorePoint incorrectly works with identity fields of entities HOT 6
- Target netstandard2.1 HOT 1
- Using multiple EDMX files within a single in-memory connection HOT 4
- In memory db ignores Unique Index HOT 1
- In memory db targeting specific migration HOT 1
- SaveChanges throws exception HOT 4
- FK violation. Value [x] does not exists in the referenced table [t] HOT 1
- How to you create a connection with IdentityDbContext ? HOT 1
- Batch Update is not working with Effort.EF6 HOT 2
- Change Tracking - Single property update of entity seems broken HOT 5
- Exception querying context during unit test HOT 3
- Nested transactions rollback should allow commit on parent transaction. HOT 2
- Z.EntityFramework.Classic.Effort v 2.2.9 is not compatible with NMemory version 3.1.2 HOT 2
- Expose IdentitySpecification so we can change the seed value HOT 3
- Object of type 'a' cannot be converted to type 'b' on Effort.Internal.Common.DatabaseReflectionHelper.InsertEntity HOT 6
- Entity Framework Plus - InsertFromQuery command - doesn't wotk HOT 2
- ExecuteSqlCommand can't be used HOT 1
- EffortException when BulkInserting a class with a nullable enum. HOT 6
- Test runs forever without a ToList() on repository query HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from entityframework-effort.