Code Monkey home page Code Monkey logo

Comments (10)

JonathanMagnan avatar JonathanMagnan commented on June 9, 2024 1

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.

scribblemaniac avatar scribblemaniac commented on June 9, 2024 1

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.

smasherprog avatar smasherprog commented on June 9, 2024

Hmm thats an actually decent work around.. Awesome thanks for this!

from entityframework-effort.

scribblemaniac avatar scribblemaniac commented on June 9, 2024

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.

smasherprog avatar smasherprog commented on June 9, 2024

He posted the answer above. Its works Great

from entityframework-effort.

smasherprog avatar smasherprog commented on June 9, 2024

you can add a c# trigger by overriding the savechanges and using changetracker

from entityframework-effort.

scribblemaniac avatar scribblemaniac commented on June 9, 2024

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.

smasherprog avatar smasherprog commented on June 9, 2024

id say give it a shot. it works for me

from entityframework-effort.

smasherprog avatar smasherprog commented on June 9, 2024

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.

smasherprog avatar smasherprog commented on June 9, 2024

You can make a fully in-memory context that behaves exactly like a real Database.

from entityframework-effort.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.