Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
CleanArchitecture
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
CleanArchitecture
Commits
fe65a304
Commit
fe65a304
authored
Mar 09, 2018
by
Steve Smith
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Trying out custom keys
WIP - doesn't work.
parent
c70ff69e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
28 additions
and
8 deletions
+28
-8
ToDoItem.cs
src/CleanArchitecture.Core/Entities/ToDoItem.cs
+22
-2
IRepository.cs
src/CleanArchitecture.Core/Interfaces/IRepository.cs
+1
-1
BaseEntity.cs
src/CleanArchitecture.Core/SharedKernel/BaseEntity.cs
+2
-2
AppDbContext.cs
src/CleanArchitecture.Infrastructure/Data/AppDbContext.cs
+1
-1
EfRepository.cs
src/CleanArchitecture.Infrastructure/Data/EfRepository.cs
+1
-1
Startup.cs
src/CleanArchitecture.Web/Startup.cs
+1
-1
No files found.
src/CleanArchitecture.Core/Entities/ToDoItem.cs
View file @
fe65a304
...
@@ -3,9 +3,9 @@ using CleanArchitecture.Core.SharedKernel;
...
@@ -3,9 +3,9 @@ using CleanArchitecture.Core.SharedKernel;
namespace
CleanArchitecture.Core.Entities
namespace
CleanArchitecture.Core.Entities
{
{
public
class
ToDoItem
:
BaseEntity
public
class
ToDoItem
:
BaseEntity
<
ToDoItemKey
>
{
{
public
string
Title
{
get
;
set
;
}
public
string
Title
{
get
;
set
;
}
public
string
Description
{
get
;
set
;
}
public
string
Description
{
get
;
set
;
}
public
bool
IsDone
{
get
;
private
set
;
}
=
false
;
public
bool
IsDone
{
get
;
private
set
;
}
=
false
;
...
@@ -15,4 +15,24 @@ namespace CleanArchitecture.Core.Entities
...
@@ -15,4 +15,24 @@ namespace CleanArchitecture.Core.Entities
Events
.
Add
(
new
ToDoItemCompletedEvent
(
this
));
Events
.
Add
(
new
ToDoItemCompletedEvent
(
this
));
}
}
}
}
public
struct
ToDoItemKey
{
private
int
_id
;
public
ToDoItemKey
(
int
id
)
{
_id
=
id
;
}
public
static
implicit
operator
ToDoItemKey
(
int
value
)
{
return
new
ToDoItemKey
(
value
);
}
public
static
implicit
operator
int
(
ToDoItemKey
me
)
{
return
me
.
_id
;
}
}
}
}
\ No newline at end of file
src/CleanArchitecture.Core/Interfaces/IRepository.cs
View file @
fe65a304
...
@@ -3,7 +3,7 @@ using CleanArchitecture.Core.SharedKernel;
...
@@ -3,7 +3,7 @@ using CleanArchitecture.Core.SharedKernel;
namespace
CleanArchitecture.Core.Interfaces
namespace
CleanArchitecture.Core.Interfaces
{
{
public
interface
IRepository
<
T
>
where
T
:
BaseEntity
public
interface
IRepository
<
T
>
where
T
:
BaseEntity
<
int
>
{
{
T
GetById
(
int
id
);
T
GetById
(
int
id
);
List
<
T
>
List
();
List
<
T
>
List
();
...
...
src/CleanArchitecture.Core/SharedKernel/BaseEntity.cs
View file @
fe65a304
...
@@ -3,9 +3,9 @@
...
@@ -3,9 +3,9 @@
namespace
CleanArchitecture.Core.SharedKernel
namespace
CleanArchitecture.Core.SharedKernel
{
{
// This can be modified to BaseEntity<TId> to support multiple key types (e.g. Guid)
// This can be modified to BaseEntity<TId> to support multiple key types (e.g. Guid)
public
abstract
class
BaseEntity
public
abstract
class
BaseEntity
<
TId
>
{
{
public
int
Id
{
get
;
set
;
}
public
TId
Id
{
get
;
set
;
}
public
List
<
BaseDomainEvent
>
Events
=
new
List
<
BaseDomainEvent
>();
public
List
<
BaseDomainEvent
>
Events
=
new
List
<
BaseDomainEvent
>();
}
}
...
...
src/CleanArchitecture.Infrastructure/Data/AppDbContext.cs
View file @
fe65a304
...
@@ -23,7 +23,7 @@ namespace CleanArchitecture.Infrastructure.Data
...
@@ -23,7 +23,7 @@ namespace CleanArchitecture.Infrastructure.Data
int
result
=
base
.
SaveChanges
();
int
result
=
base
.
SaveChanges
();
// dispatch events only if save was successful
// dispatch events only if save was successful
var
entitiesWithEvents
=
ChangeTracker
.
Entries
<
BaseEntity
>()
var
entitiesWithEvents
=
ChangeTracker
.
Entries
<
BaseEntity
<
int
>
>()
.
Select
(
e
=>
e
.
Entity
)
.
Select
(
e
=>
e
.
Entity
)
.
Where
(
e
=>
e
.
Events
.
Any
())
.
Where
(
e
=>
e
.
Events
.
Any
())
.
ToArray
();
.
ToArray
();
...
...
src/CleanArchitecture.Infrastructure/Data/EfRepository.cs
View file @
fe65a304
...
@@ -6,7 +6,7 @@ using Microsoft.EntityFrameworkCore;
...
@@ -6,7 +6,7 @@ using Microsoft.EntityFrameworkCore;
namespace
CleanArchitecture.Infrastructure.Data
namespace
CleanArchitecture.Infrastructure.Data
{
{
public
class
EfRepository
<
T
>
:
IRepository
<
T
>
where
T
:
BaseEntity
public
class
EfRepository
<
T
>
:
IRepository
<
T
>
where
T
:
BaseEntity
<
int
>
{
{
private
readonly
AppDbContext
_dbContext
;
private
readonly
AppDbContext
_dbContext
;
...
...
src/CleanArchitecture.Web/Startup.cs
View file @
fe65a304
...
@@ -45,7 +45,7 @@ namespace CleanArchitecture.Web
...
@@ -45,7 +45,7 @@ namespace CleanArchitecture.Web
config
.
Scan
(
_
=>
config
.
Scan
(
_
=>
{
{
_
.
AssemblyContainingType
(
typeof
(
Startup
));
// Web
_
.
AssemblyContainingType
(
typeof
(
Startup
));
// Web
_
.
AssemblyContainingType
(
typeof
(
BaseEntity
));
// Core
_
.
AssemblyContainingType
(
typeof
(
ValueObject
));
// Core
_
.
Assembly
(
"CleanArchitecture.Infrastructure"
);
// Infrastructure
_
.
Assembly
(
"CleanArchitecture.Infrastructure"
);
// Infrastructure
_
.
WithDefaultConventions
();
_
.
WithDefaultConventions
();
_
.
ConnectImplementationsToTypesClosing
(
typeof
(
IHandle
<>));
_
.
ConnectImplementationsToTypesClosing
(
typeof
(
IHandle
<>));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment