Comments (3)
i think it's a bad idea for the library to do that automatically due to cases such as:
say the developer wants to just embed the author without actually saving it.
var author = new Author { Name = "Eckhart Tolle" }
book.Author = author;
book.Save()
this will embed the author in the book with a null
id. which is the expected behavior. if the library saves the author to the collection without the developer explicitly saying so, that's a bug. now there's an unwanted author entity in the collection.
and for referenced relationships, we could assume the developer intended to save the author to the db if they wanted to reference that author from another entity like so:
book.AuthorRef = author.ToReference();
but i feel it's good to keep the behavior consistent everywhere and let the developer train themselves in to explicitly saving entities.
also it would be breaking single responsibility principle at method level.
hope you see my point of view :-)
from mongodb.entities.
Gotcha, could we possibly introduce another method for it as a compromise? For instance... book.SaveAll()
?
In most cases I just feel like it's a lot of repetitive calls and people coming from entity framework would feel more at home, me included.
from mongodb.entities.
it would also be bad from a performance perspective because I'd have to use reflection to loop through each and every property of the entity being saved to see which properties contain other entities that haven't been saved. I've seen classes that contain close to 100 properties. using reflection on a class like that would be a crime imho. also what happens to deeply nested unsaved entities? should the library auto save those too?
you see, it's just an unnecessary complication from the perspective of the library.
for referenced relationships however I'm willing to create an additional method for adding a related entity. something like book.Authors.AddSaving(author)
from mongodb.entities.
Related Issues (20)
- DB.SaveAsync Error : Must contain at least 1 request HOT 3
- About the MongoDB.Driver.Linq.ExpressionNotSupportedException HOT 2
- Change Stream functionality doesn't work HOT 1
- Delete by lambda expression report errors HOT 4
- DBContext.DeleteAsync throwing exception starting from v21.0.2 HOT 2
- ReadName can only be called when State is Name, not when State is EndOfDocument. HOT 1
- DeleteAsync is Acknowledged but DeletedCount is always zero HOT 2
- Missing Parameterless constructor HOT 1
- The collection type 'MongoDB.Entities.Many' is abstract, an interface, or is read only, and could not be instantiated and populated HOT 1
- [Feature Request] Add property attribute to configure TTL HOT 1
- support soft delete HOT 3
- migrations run repeatly HOT 3
- I would like to ask how to write a query, can help me? HOT 8
- Q: Parallel integration tests with separate database per test class/collection HOT 1
- Nullable ID field in IEntity interface HOT 4
- Disallow saving objects with unregistered discriminator value HOT 3
- About Customize collection names HOT 1
- Does DB.Update lock row while update? HOT 3
- While updating how to add record if not found? HOT 1
- How to donate HOT 1
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 mongodb.entities.