Comments (3)
already doable. see here: https://mongodb-entities.com/wiki/DB-Instances-Global-Filters.html
from mongodb.entities.
global filter not work as expected, when delete a document, it should update IsDeleted
to true
rather than do nothing
sample code :
public class TestModel:Entity,ISoftDelete
{
public string Name { get; set; }
public bool IsDeleted { get; set; }
}
interface ISoftDelete
{
bool IsDeleted { get; set; }
}
public class MyDBContext : DBContext
{
public MyDBContext()
{
SetGlobalFilterForInterface<ISoftDelete>("{ IsDeleted : false }");
}
}
unit test:
[Fact]
public async Task Test1()
{
await DB.InitAsync("testdb",
MongoClientSettings.FromConnectionString(
"mongodb://root:******@172.10.2.200:30000"));
var context = new MyDBContext();
var model = new TestModel();
await context.InsertAsync(model);
await context.DeleteAsync<TestModel>(model.ID);
var result = await context.Find<TestModel>().MatchID(model.ID).ExecuteFirstAsync();
// failure here, result should be null
Assert.Null(result);
}
from mongodb.entities.
test case 2:
[Fact]
public async Task Test2()
{
await DB.InitAsync("testdb",
MongoClientSettings.FromConnectionString(
"mongodb://root:***@172.10.2.200:30000"));
var context = new MyDBContext();
var model = new TestModel()
{
Name = "already deleted",
};
await context.InsertAsync(model);
await context.DeleteAsync<TestModel>(it=>it.Name==model.Name);
var result = await context.Find<TestModel>().Match(it=>it.Name==model.Name).ExecuteFirstAsync();
// failure here, result should be null
Assert.Null(result);
}
result:
Assert.Null() Failure
Expected: (null)
Actual: TestModel { ID = "6492beae6462445f38de3142", IsDeleted = False, Name = "already deleted" }
from mongodb.entities.
Related Issues (20)
- CreateCollectionAsync() - small documentation changes
- 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
- 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
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.