Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not to having GUID as primary key for all the tables #37

Closed
AliCharper opened this issue Aug 25, 2017 · 16 comments
Closed

Not to having GUID as primary key for all the tables #37

AliCharper opened this issue Aug 25, 2017 · 16 comments
Labels

Comments

@AliCharper
Copy link

Hi,

My existing database does not have a GUID as primary key for all the tables. What should I do now?.

@thiagolunardi
Copy link
Contributor

Can you provide more info about your database?
Are you trying just to run Equinox at your environment, or it's something else?

@AliCharper
Copy link
Author

I have an existing very complicated DB. That's why I already asked a more complicated sample with more than one Entity which it should have one-one and one-many relation as well.

@thiagolunardi
Copy link
Contributor

Ok, let me see how I can help.
You don't need to use Guid as Id, it's not an obligation.
You just need to map the entity properly at your Data Context project.

Asking for a more complex sample is too generic and it will not happen, it's not planned.
But, if you share one small piece of problem at time, we may try to help.

@AliCharper
Copy link
Author

YES. Thanks. I get lost when I have to monitor events for a complex scenario. I wish it had more than one Model class and handled relations as a sample.

@thiagolunardi
Copy link
Contributor

Can you write a small sample snipped here? Then we can go deep on it.

@AliCharper
Copy link
Author

1- Some tables do not have GUID as Primary-key and it is integer for example.
2- Entities have relation so I am not sure about how to define a new Event handler for the other Entity.

I did change the AggreatorID from GUID to string and work fine , but I do not know what to do if my table does not have a GUID primary key.

@AliCharper
Copy link
Author

If I use anything other than GUID as a primarykey, then how to assign to the aggrigatorID ?

public Persons(Guid id, string name, string family, string address)
{
Id = id;
Name = name;
Family = family;
Address = address;
}

the type would be different then.

@thiagolunardi
Copy link
Contributor

It's important that you may use one EventSource entity per Domain entity.
So, if the domain entity has Guid Id, the AggrigatorId will be Guid, is it's int, so both should be int.

@AliCharper
Copy link
Author

AliCharper commented Aug 25, 2017

but I do inherit from Entity class which has a GUID ID in the base class.

@thiagolunardi
Copy link
Contributor

Just remove te Guid Id property from Entity class, and bring it to each Entity specific class.
Your are adjusting, so, ofc, you need to do a few dirty job me make it work.

@AliCharper
Copy link
Author

so if the primarykey name was not ID and it was not GUID, the aggregateid would not work.Correct?.

@thiagolunardi
Copy link
Contributor

The idea behind the aggregateId is just to keep track on changes through eventsourcing. Just create a Guid.New for it and you will be fine.

They don't need to be the same, just need to have one aggregateid per one Entity.

Imagine if you have compose key for an entity, you don't create a compose aggregateid , just keep one-to-one relation.

@thiagolunardi
Copy link
Contributor

@AliCharper May we close this discussion?

@AliCharper
Copy link
Author

I think so, but I have so many other questions which I would ask later.

@EduardoPires
Copy link
Owner

If you have an Int key for your tables just change it to Int in this sample.
If you have N kinds of keys you can try using a generic datatype passing by the repository configuration like:

public class Repository<TKey, TEntity>

And set your datatype keys as you like.

@AliCharper
Copy link
Author

Imagine if you have compose key for an entity, you don't create a compose aggregateid , just keep one-to-one relation.

Yes, but imagine that I have an existing DB which has so many tables with IN primarykeys or Composite ones. then how can I assign a GUID as an aggregateId ?.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants