diff --git a/readme.md b/readme.md
index 4705ed4e..b391a8ef 100644
--- a/readme.md
+++ b/readme.md
@@ -77,7 +77,7 @@ builder.UseSqlServer(connection);
builder.EnableRecording();
var data = new SampleDbContext(builder.Options);
```
-snippet source | anchor
+snippet source | anchor
`EnableRecording` should only be called in the test context.
@@ -106,7 +106,7 @@ await data
await Verify();
```
-snippet source | anchor
+snippet source | anchor
Will result in the following verified file:
@@ -157,7 +157,7 @@ await Verify(
entries
});
```
-snippet source | anchor
+snippet source | anchor
@@ -189,7 +189,7 @@ await data2
await Verify();
```
-snippet source | anchor
+snippet source | anchor
@@ -251,7 +251,7 @@ await data
await Verify();
```
-snippet source | anchor
+snippet source | anchor
@@ -298,7 +298,7 @@ public async Task Added()
await Verify(data.ChangeTracker);
}
```
-snippet source | anchor
+snippet source | anchor
Will result in the following verified file:
@@ -343,7 +343,7 @@ public async Task Deleted()
await Verify(data.ChangeTracker);
}
```
-snippet source | anchor
+snippet source | anchor
Will result in the following verified file:
@@ -388,7 +388,7 @@ public async Task Modified()
await Verify(data.ChangeTracker);
}
```
-snippet source | anchor
+snippet source | anchor
Will result in the following verified file:
@@ -423,7 +423,7 @@ var queryable = data.Companies
.Where(_ => _.Name == "company name");
await Verify(queryable);
```
-snippet source | anchor
+snippet source | anchor
Will result in the following verified files:
@@ -490,7 +490,7 @@ await Verify(data.AllData())
serializer =>
serializer.TypeNameHandling = TypeNameHandling.Objects);
```
-snippet source | anchor
+snippet source | anchor
Will result in the following verified file with all data in the database:
@@ -573,7 +573,7 @@ public async Task IgnoreNavigationProperties()
.IgnoreNavigationProperties();
}
```
-snippet source | anchor
+snippet source | anchor
@@ -586,7 +586,7 @@ var options = DbContextOptions();
using var data = new SampleDbContext(options);
VerifyEntityFramework.IgnoreNavigationProperties();
```
-snippet source | anchor
+snippet source | anchor
@@ -607,7 +607,7 @@ protected override void ConfigureWebHost(IWebHostBuilder webBuilder)
_ => dataBuilder.Options));
}
```
-snippet source | anchor
+snippet source | anchor
Then use the same identifier for recording:
@@ -623,7 +623,7 @@ var companies = await httpClient.GetFromJsonAsync("/companies");
var entries = Recording.Stop(testName);
```
-snippet source | anchor
+snippet source | anchor
The results will not be automatically included in verified file so it will have to be verified manually:
@@ -638,7 +638,46 @@ await Verify(
sql = entries
});
```
-snippet source | anchor
+snippet source | anchor
+
+
+
+## ScrubInlineEfDateTimes
+
+In some scenarios EntityFrmaeowrk does not parameterise DateTimes. For example when querying [temporal tables](https://learn.microsoft.com/en-us/sql/relational-databases/tables/temporal-tables).
+
+`ScrubInlineEfDateTimes()` is a convenience method that calls `.ScrubInlineDateTimes("yyyy-MM-ddTHH:mm:ss.fffffffZ")`.
+
+
+### Static usage
+
+```
+VerifyEntityFramework.ScrubInlineEfDateTimes();
+```
+
+
+### Instance usage
+
+
+
+```cs
+var settings = new VerifySettings();
+settings.ScrubInlineEfDateTimes();
+await Verify(target, settings);
+```
+snippet source | anchor
+
+
+
+### Fluent usage
+
+
+
+```cs
+await Verify(target)
+ .ScrubInlineEfDateTimes();
+```
+snippet source | anchor
diff --git a/src/.editorconfig b/src/.editorconfig
index b1aca030..5a527e69 100644
--- a/src/.editorconfig
+++ b/src/.editorconfig
@@ -309,4 +309,14 @@ resharper_space_before_self_closing = true
ij_xml_space_inside_empty_tag = true
[*.json]
-indent_size = 2
\ No newline at end of file
+indent_size = 2
+
+# Verify settings
+[*.{received,verified}.{txt,xml,json,md,sql,csv,html}]
+charset = "utf-8-bom"
+end_of_line = lf
+indent_size = unset
+indent_style = unset
+insert_final_newline = false
+tab_width = unset
+trim_trailing_whitespace = false
\ No newline at end of file
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
index ac36c52e..763617a5 100644
--- a/src/Directory.Build.props
+++ b/src/Directory.Build.props
@@ -2,7 +2,7 @@
CS1591;CS0649;CS8632;EF1001
- 12.2.1
+ 12.3.0
preview
1.0.0
EntityFramework, Verify
diff --git a/src/Verify.EntityFramework.Tests/CoreTests.ScrubInlineEfDateTimes.verified.txt b/src/Verify.EntityFramework.Tests/CoreTests.ScrubInlineEfDateTimes.verified.txt
new file mode 100644
index 00000000..6114d036
--- /dev/null
+++ b/src/Verify.EntityFramework.Tests/CoreTests.ScrubInlineEfDateTimes.verified.txt
@@ -0,0 +1 @@
+DateTime_1
\ No newline at end of file
diff --git a/src/Verify.EntityFramework.Tests/CoreTests.ScrubInlineEfDateTimesFluent.verified.txt b/src/Verify.EntityFramework.Tests/CoreTests.ScrubInlineEfDateTimesFluent.verified.txt
new file mode 100644
index 00000000..6114d036
--- /dev/null
+++ b/src/Verify.EntityFramework.Tests/CoreTests.ScrubInlineEfDateTimesFluent.verified.txt
@@ -0,0 +1 @@
+DateTime_1
\ No newline at end of file
diff --git a/src/Verify.EntityFramework.Tests/CoreTests.cs b/src/Verify.EntityFramework.Tests/CoreTests.cs
index af695acb..296e22f9 100644
--- a/src/Verify.EntityFramework.Tests/CoreTests.cs
+++ b/src/Verify.EntityFramework.Tests/CoreTests.cs
@@ -26,6 +26,33 @@ await ThrowsTask(
.IgnoreStackTrace();
}
+ [Test]
+ public async Task ScrubInlineEfDateTimes()
+ {
+ var target = "2024-09-05T06:59:16.1018211Z";
+
+ #region ScrubInlineEfDateTimesInstance
+
+ var settings = new VerifySettings();
+ settings.ScrubInlineEfDateTimes();
+ await Verify(target, settings);
+
+ #endregion
+ }
+
+ [Test]
+ public async Task ScrubInlineEfDateTimesFluent()
+ {
+ var target = "2024-09-05T06:59:16.1018211Z";
+
+ #region ScrubInlineEfDateTimesFluent
+
+ await Verify(target)
+ .ScrubInlineEfDateTimes();
+
+ #endregion
+ }
+
[Test]
public async Task WithOrderBy()
{
diff --git a/src/Verify.EntityFramework/VerifyEntityFramework.cs b/src/Verify.EntityFramework/VerifyEntityFramework.cs
index ab9e7710..0ae95248 100644
--- a/src/Verify.EntityFramework/VerifyEntityFramework.cs
+++ b/src/Verify.EntityFramework/VerifyEntityFramework.cs
@@ -54,6 +54,18 @@ public static void IgnoreNavigationProperties(this VerifySettings settings, IMod
}
}
+ public static void ScrubInlineEfDateTimes() =>
+ VerifierSettings.ScrubInlineDateTimes("yyyy-MM-ddTHH:mm:ss.fffffffZ");
+
+ public static SettingsTask ScrubInlineEfDateTimes(this SettingsTask settings)
+ {
+ settings.CurrentSettings.ScrubInlineEfDateTimes();
+ return settings;
+ }
+
+ public static void ScrubInlineEfDateTimes(this VerifySettings settings) =>
+ settings.ScrubInlineDateTimes("yyyy-MM-ddTHH:mm:ss.fffffffZ");
+
public static void IgnoreNavigationProperties(IModel? model = null)
{
foreach (var (type, name) in model.GetNavigationsOrShared())