Bidirectional many-to-one/one-to-many
This is the most common type of association, I have used Product and ProductReview tables to depict how it works and how it can be mapped.
In our case each product (one) can have multiple reviews (many). On ProductReview side association can be mapped like this:
References(x => x.Product, "ProductID").FetchType.Join();
<many-to-one fetch="join" name="Product" column="ProductID" />
1: var review = session.Get<ProductReview>("1");
2: var productName = review.Product.Name;
SELECT ... FROM ProductReview pr left outer join Product p on pr.ProductID=p.ProductID WHERE ...
SELECT ... FROM ProductReview pr WHERE ...
SELECT ... FROM Product p WHERE ...
In general you have to determine in each case which FetchType is more beneficial for you.
Now, lets check Product side, this is many side of one-to-many association so Product has a collection of reviews, I have chosen to use ISet:
1: HasMany(x => x.ProductReview)
2: .KeyColumnNames.Add("ProductID")
3: .AsSet()
4: .Inverse()
5: .Cascade.All();
1: <set name="ProductReview" inverse="true" cascade="all">
2: <key column="ProductID" />
3: <one-to-many class="AdventureWorksPlayground.Domain.Production.ProductReview, AdventureWorksPlayground, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
4: </set>
- inverse="true" - it tells NHibernate that other side of this association is a parent. I know that it sounds other way round but that's how it is. ProductReview table has foreign key (and ProductID column) therefore ProductReview controls the association.
What are the implications? In above example review.Product has to be set correctly, as this the property which NHibernate will check to figure our what product is associated with the review. It will ignore collection of reviews on product! - cascade="all" - it tells NHibernate that all events (like save, update, delete) should be propagated down. Calling session.SaveOrUpdate(product) will save (or update) the product itself but also the same event will be applied to all depending objects.
1: var product = new Product
2: {
3: Name = "Bike",
4: SellStartDate = DateTime.Today
5: };
6:
7: product.ProductReview.Add(new ProductReview
8: {
9: Product = product,
10: Rating = 4,
11: ReviewerName = "Bob",
12: ReviewDate = DateTime.Today
13: });
14:
15: product.ProductReview.Add(new ProductReview
16: {
17: Product = product,
18: Rating = 2,
19: ReviewerName = "John",
20: ReviewDate = DateTime.Today
21: });
22:
23:
24: session.SaveOrUpdate(product);
Can you see a potential problem here? Each ProductReview knows about its Product, and thanks to cascade="all" everything is configured correctly but still you may end up with just one review in database ... why? I'm using ISet here, so it guarantees that I have only unique objects in the collection. Most of the people know that NHibernate classes should have Equals() and GetHashCode() methods overridden. It is useful when you want to check that two objects represent the same row in a database. People use primary id column in Equals() implementation, primary id is unique so it fits perfectly isn't it? It does if primary key is defined, and in above example, objects are saved in a last line, before that, they don't have any primary id. That is a reason for using different data to determine equality.
Bidirectional many-to-many association
For this association I have used Product, ProductProductPhoto (link) and ProductPhoto tables. Each product can have multiple photos, but each photo can also be associated with multiple products. ProductProductPhoto is just a link table and doesn't have any representation as a separate class. On both sides mapping looks very similarly.
Product side:
1: HasManyToMany(x => x.Photos)
2: .AsBag()
3: .WithTableName("Production.ProductProductPhoto")
4: .WithParentKeyColumn("ProductID")
5: .WithChildKeyColumn("ProductPhotoID")
6: .Cascade.All();
1: <bag name="Photos" cascade="all" table="Production.ProductProductPhoto">
2: <key column="ProductID" />
3: <many-to-many column="ProductPhotoID" class="AdventureWorksPlayground.Domain.Production.ProductPhoto, AdventureWorksPlayground, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
4: </bag>
1: HasManyToMany(x => x.Products)
2: .AsBag()
3: .WithTableName("Production.ProductProductPhoto")
4: .WithParentKeyColumn("ProductPhotoID")
5: .WithChildKeyColumn("ProductID")
6: .Inverse();
1: <bag name="Products" inverse="true" table="Production.ProductProductPhoto">
2: <key column="ProductPhotoID" />
3: <many-to-many column="ProductID" class="AdventureWorksPlayground.Domain.Production.Product, AdventureWorksPlayground, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
4: </bag>
This is fairly straightforward example but unfortunately not very common. In typical case link table has some additional data (like ProductDocument which has ModifiedDate column) and those additional data forces us to use different approach. Among NHibernate best practices you can find general guideline:
Good usecases for a real many-to-many associations are rare. Most of the time you need additional information stored in the "link table". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any other association style and ask yourself if it is really necessary.So, in fact, for tables Product, Document and ProductDocument, we have to create three classes and three mappings. Both Product and Document have a link to each other through ProductDocument object. Interesting part is ProductDocument which has composite primary id (two columns) which can be mapped in a following way:
1: public class ProductDocumentMap : ClassMap<ProductDocument>
2: {
3: public ProductDocumentMap()
4: {
5: UseCompositeId()
6: .WithKeyReference(x => x.Product, "ProductID")
7: .WithKeyReference(x => x.Document, "DocumentID");
8:
9: Map(x => x.ModifiedDate).Not.Nullable();
10: }
11: }
1: <class name="ProductDocument" table="Production.ProductDocument" xmlns="urn:nhibernate-mapping-2.2">
2: <composite-id>
3: <key-many-to-one class="AdventureWorksPlayground.Domain.Production.Product, AdventureWorksPlayground, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Product" column="ProductID" />
4: <key-many-to-one class="AdventureWorksPlayground.Domain.Production.Document, AdventureWorksPlayground, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" name="Document" column="DocumentID" />
5: </composite-id>
6: <property name="ModifiedDate" column="ModifiedDate" not-null="true" type="DateTime">
7: <column name="ModifiedDate" />
8: </property>
9: </class>
1: var product = CreateNewProduct();
2: var photo1 = CreateNewPhoto();
3: var photo2 = CreateNewPhoto();
4:
5: product.Photos.Add(photo1);
6: product.Photos.Add(photo2);
7:
8: // we don't have to save photos because of Cascade.SaveUpdate()
9: // INSERT INTO [Production.Product]
10: // INSERT INTO [Production.ProductPhoto]
11: // INSERT INTO [Production.ProductPhoto]
12: // INSERT INTO [Production.ProductProductPhoto]
13: // INSERT INTO [Production.ProductProductPhoto]
14: session.SaveOrUpdate(product);
Related posts
192 comments:
Hello,I got one question.
Assuming that the tables keep intact, but if a product can have many photos,a photo can be only belong to a product,the how to map product and photo?
Great post Marek!
Great post I've been following Fluent NHibernate for a while but have been working on other parts of my project and haven't gotten around to doing collection mappings using this for reference should make it very easy to understand which mapping is correct.
Having your schema at the top of this post made it alot more understandable, most posts I've seen on this topic tend to leave the schemas out of it.
@Darek and @dotnetchris
Thanks a lot for positive feedback!
@Yoyo
If I understand correctly your question then without changing tables you can't really switch to many(photos)-to-one(product).
Hi,
Sorry for my obscure comment.I just got 5 tables in one of my project,which are Posts,Products, Comments,and other two linked tables CommentToPost(CommentID,PostID) plus CommentToProduct(CommentID,ProductID).
A Post(or a Product) can have many Comments,while a Comment belongs to only one Post(or a Product).
How to map these 5 tables using FL?
@mamboer
If a single comment belongs to only one product then there is no point in having link table. You should remove link table and add a foreign key to Comments table. Then it will be simple one-to-many association.
On Comment side you can have:
References(x => x.Product, "ProductID")
and on Product side:
HasMany(x => x.Comments)
.WithKeyColumn("ProductID")
.AsSet()
.Inverse()
.Cascade.All();
Hope that it helps :)
Hi,maybe you mistake my intention here.I have a few objects which are commentable,Post's comment and Product's comment e.g.,both have the same data structure,that's why i need link table and treat Comment as an independent business object.
As in your case,things go well in the case of domain design,but it isn't so good when go to DB design.
Best regards and respect for your further points.
Additional remarks:
Many commentable business objects have the SAME comment data structure ,
1,Posts(PostID,Title,Content,...)
2,Products(ProductID,Name,Desc,...)
3,Album(AlbumID,Title,...)
...
...
Typically we have two kinds of DB designs,
1,Comment dependent,no link table
PostComment(CommentID,PostID,Title,Content,...)
ProductComment(CommentID,ProductID,Title,Content,...)
AlbumComment(CommentID,AlbumID,Title,Content,...)
2,Comment independent,having link table
Comment(CommentID,Title,Content,...)
PostComment(CommentID,PostID)
ProductComment(CommentID,ProductID)
...
Obviously,option two does a better job in the DB world.
@mamboer
I see your point now ... it's a tricky question :)
Comment is a separate table, and will be represented a as separate object, that's certain. But single comment can reference Product or Post and that is a problem here.
I think the easiest way will be to have Product (and Post) object that will use unidirectional many-to-many association though link table to the Comment table. So comments will be available as a collection for those objects but comment itself won't have a link back.
How does it sound?
ha ha,it sounds good:)
which is how i map this situation currently.
Do u know CSLA.NET?
I run a framework leveraging CSLA.NET with Nhibernate on google code,i'm looking for people who wanna do contributions.HAVE a look if you are interested.
Here goes the link:
http://code.google.com/p/cslarepo/
I would love to see your complete fluent mappings somewhere ? Can you post them or just post an url ?
Hi Christoffer ... here is my test project, you should find mappings there.
Hi,i got an strange issue on M2M relationship mapping.
Let's say we have 3 domain objects:
1,User
2,UserRole(A link class)
3,Role
I added two roles to a user,but can't remove them through the user's navigation property LinkToRoles(of type IList< UserRole >),it always throw an error "a different object with the same identifier value was already associated with the session".
You can check my unit test on:
http://code.google.com/p/mamboer/source/browse/trunk/src/Samples/Vivasky/Vivasky.Tests/Data/UserRepositoryTests.cs,the Can_Delete_Role() test method.
Can you share me your opinion?
Hi, I've got a question. I try to do my example exactly the same as yours but it doesn't work. I've four tables: Client (id), Agent (id), Function(id) and AgentClients (client_id, agent_id, function_id). Could you write how to do mapping to this examaple. Thanks in advance :)
Creat post. i got stuck at work with a new project that involves alot of relations and this is just what i needed.
Thanks Marek
how does your mappings look for product and document?
how does the domain look for product, document and productdocument? im kinda confused with what should have IList for what and do i have 2 IList in productdocument domain?
hope im not to confusing with my questions. maby it should be eaziest way if you could post your mappings and domain so i could take a look :)
thx in advance
@Topflysecurity
Here you can find all source files:
http://marekblotny.googlepages.com/AdventureWorksPlayground.collections.zip
ProductDocument links document and product so it knows only about single product and single document. Product and Document have a collection of links (IList<ProductDocument>).
Cheers, Marek
Thx for the Code Marek
i looked at it but when i use it for my model it wont work. do i need to use the overrides in all classes? i didnt really get that. i get errors in mapping. this is often
Could not determine type for: Phaeton.Core.Domain.Receiver, Phaeton.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, for columns: NHibernate.Mapping.Column(ReceiverID).
i asume you are buizy so i will not post any code but if you feel u got a little time over just let me know :)
Can u send me a sample of how to convert stored procedures having left/outer joins , nested querries , udfs to equilavent fulent n hibernate code . All the examples given are simple scenarios but i need to have a sample of a complicated scenario . thanks
Thank you - especially for the sample as well.
Very well done. I was struggling with the many to many composite part of it and your sample helped me through it.
@Steve Gentile: thanks for the praise, I'm glad that it helped you :)
Nice post! but... I was actually hoping to also find something on one-to-one relationships. I know you can create them as one-to-many but then the one-and-one-only check is gone, and I know how to create them through the HBM config, but how would you do it using Fluent NHibernate with Auto Mapping?
Sorry if this is off-topic.
-- Abel --
Hi, thid post is good, but version 1.0 holds some changes and it would be nice if the post will be addapted.
concerning the many to many example, what if I don't what the ProductPhoto Object to hold a list of products ?
(I just want the product to hold the list of it's photos) - would it be possible to map it without having the prodcutphoto class a Product member ?
Hi, Great post! from never working on Fluent NHibernate, I can now build quiet simple mappings by using this post and the FAQ on NHibernate website.
I was hoping you could extend you last example to show how one could go about updating "ModifiedDate" column in "ProductProductPhoto" table?
oops! ...
I was hoping you could extend you last example to show how one could go about updating "ModifiedDate" column in "ProductDocument" table?
Sorry, realise this post is getting old, but how would you go about mapping something like User -> UserForumRole -> Forum, where UserForumRole is many to many but also contains a (property / column) denoting the role the user has for the forum? I'm thinking the many to many table would need to exist as an entity with a user property, a forum property and a role enum.
Thanks...
The sample he gives is correct for
User -> UserForumRole -> Forum
Just follow his Product -> ProductProductPhoto -> ProductPhoto Sample.
Read his stuff twice, as it's a bit confusing.
One thing to note: With the latest version of fluent, I had to remove the
.WithTableName(etc
or in the current version
.Table(etc
to get it to build the database correctly.
It kept trying to create the many-to-many table twice on me.
Just wanna thank you ... searched and found your helpful article
Very clear article, it was helped me a lot. Thank you very much
What about if there's only PKs in ProductProductPhoto and a relatioship with QualityPhoto. One ProductProductPhoto has many QualityPhoto.
1) Do you need mapping ProductProductPhoto or put HasManyToMany in Product and ProductPhoto?
2) How is the mapping of QualityPhoto?
I have this situation in a legacy database that I couldn't even mapping ProductProductPhoto.
Could you help me?
Very useful post. I would love however to see it updated to the latest version of Fluent
Yep, update to the latest version would be great. This post is now out-of-date, at least in terms of source code.
Can u please give any complete example about extra column in link table
Good usecases for a real many-to-many associations are rare. Most of the time you need additional information stored in the "link table". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any other association style and ask yourself if it is really necessary.
So, in fact, for tables Product, Document and ProductDocument, we have to create three classes and three mappings. Both Product and Document have a link to each other through ProductDocument object. Interesting part is ProductDocument which has composite primary id (two columns) which can be mapped in a following way:
Hi Everyone
Can some one please give me a fluent example of how to deal with this scenario:
CommentsTable(id,for,by,text,date and more properties....)
Given that: comments could be for product, employee, toilets of that company.
A linking table for each entity, like
product-comments(pid,cid,expDate)
employee-comments(eid,cid,expDate)
Domain model
myComment[expDate,Comment]
product=>myComments as IList
employee=>myComments as IList
Now: I how do i map this one, with myComment mapped as resusable component.
Thanks
Guru
May Be This is more clear scenario
class Person
{
public int Id;
public string Name;
public IList Addresses;
}
class Employee:Person
{
public int Salary;
}
class Supplier:Person
{
public string PhoneNumber;
}
class OneAddress
{
public int Id;
public DateTime LastUsed;
public Address Address;
}
class Address
{
public int Id;
public string Street;
public string City;
}
/*
* Linking Tables
* Employee-Address[empId,addressId,lastUsed]
* Supplier-Address[supId,addressId,lastUsed]
*/
Really good post! Thank you :)
Thanks for this nice explanation!
Nice post.Thank you for taking the time to publish this information very informative! So happy to be given a privilege to post a comment here.
aissa
www.joeydavila.net
I am so happy to stop by your site and read something very interesting. I hope that you could inspire more people with your great artwork and will leave joy to their faces. Visit my site too for a fun experience so don't miss it.
n8fan.net
www.n8fan.net
Very Informative blog, Thank you for this Information.
Thanks for sharing the interesting information, the article is very interesting to read and may be useful for everything. Visit for:
web development company in noida
lucky patcher 2019 apk download
Thanks for the article may be useful for everything
I want to say that this post is awesome, nice written.
Thanks for sharing this information. Zehar Global Services is One Of the Best Designing and Development Copmany in Noida.
Mobile App Development
Graphic Design
Digital marketing
Web Development
Thank you so much for such a wonderful blog. I’m really thankful to you for this informative…..
صيانات علي اعيل متسوي الان من الكفائه الان وبافضل مستوي الان توكيل كينوود من الدقه من خلال افضل مهندسين الان في الصيانات و بافضل كفائه الان و دقه في الصيانات و التركيب توكيل جونكر و علي اعلي مستوي تواصلو معنا الان
الان نوفر اليكم الان افضل الصيانات و علي اعلي صيانة يونيون اير مستوي الان من التميز و بافضل الكفائه الان في اعمال الصيانة و باقل الاسعار و افضل الخصومات الان و بافضل فريق عمل في اعمال صيانة ال جي التركيب و الصيانة المنزليه تواصلو معنا الان
مع صيانة بلاك اند ديكر يمكنكم الأن الحصول علي جميع قطع الغيار الأصلية بأقل الأسعار و بضمان لعدد من السنوات تواصل الأن مع خدمة عملاء تكنوجاز لطلب خدمة الدعم الفني المنزلي بأقل الأسعار ولا تتوقف عن زياره موقعنا لو كنت ترغب في الحصول علي أفضل العروض و الخدمات
تمتع الان بافضل صيانات من خلال بتوفير افضل متخصصين خدمة عملاء يونيفرسال في مجالات الصيانات حيث يتم الصيانة علي اعلي مستوي من الاحترافيه و الادقان و بافضل خدمة عملاء جليم جاز مستوي من الكفائه تواصلو معنا الان من خلال موقعنا او من خلال خدمة العملاء الخاصه خدمة عملاء فريجيدير بنا و احصل علي افضل خدمات الصيانة
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
Python training program is most important for the students in education. It is the popular programming language for education software.
Python is the primary programming language.The students who need to get more knowledge about this language must go for the training.
Python Training In Greater Noida
Python Coaching in Greater Noida
Python Course in Greater Noida
Thnx For Sharing A valuable Opnion, Thnx For A Sharing Ur Services,I am Very Glad Read Your Services. If u Want To leading manufacturers of plastic pallets in the field. You can select the best product from the wide collection in our online portal. We are supplying high quality of pallets products to customers at affordable cost. From our online portal,
Plastic Pllates Manufactures
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
C/C++ Training is particularly basic to anyone who needs to be a programmer.
Regardless of whether you want to enhance your insight in specific zones or searching for a course to upgrade your skills in coding,
joining a C/C++ Training in Greater Noida can without a doubt help.
C++ Coaching in Greater Noida
C Coaching in Greater Noida
C/C++ Training in Greater Noida
C/C++ Classes in Greater Noida
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
Java has become more popular and is widely used as compared to other programming languages like Python, C/C++, C#, PHP and so on.
Many people often ask why it is so important to learn Java Programming. Well, if it’s your concern too, the solution is simple. To know further,
kindly take a look at below info
Java Classes in Greater noida
Java Training Institute in Greater Noida
Java course in Greater Noida
Java Training in Greater Noida
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
The extent of digital marketing is expanding significantly. On account of the Digital Marketing course in Greater Noida.
More vocation decisions and greater pay are only two of the numerous advantages that digital marketing experts have in
store when they finish the Digital Marketing course in Greater Noida.
Digital Marketing Institute in Greater Noida
Digital Marketing Training In Greater Noida
Digital Marketing Course in Greater Noida
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
In case you are hoping to upgrade your insight in Search Engine Optimization (SEO), book in the SEO training in Greater Noida course.
Search engine optimization training courses will give all the moment points of interest, beginning from building connects to an objective site
SEO Coaching in Greater Noida
SEO Classes in Greater Noida
SEO Training in Greater Noida
I am very glad to see this post. It is very interesting and informative. Such a nice post, i am very thankful and i like this post. Also i would like to share one thing which is an institute for learning programming languages, which is the most demanding now a day. For that, you can join at this link
Pythan Training in Greater Noida
Pythan coaching in Greater Noida
Pythan institute in Greater Noida
Pythan classes in Greater Noida
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
DAA Coaching in Greater Noida to improve your skill in the data structure. They offer Data Structure Classes with theory and practical classes.
The institute has designed for the training class that depends on the preferences of candidate and needs of industry.
DAA Course in Greater Noida
DAA Coaching in Greater Noida
DAA Classes in Greater Noida
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
DAA Coaching in Greater Noida to improve your skill in the data structure. They offer Data Structure Classes with theory and practical classes.
The institute has designed for the training class that depends on the preferences of candidate and needs of industry.
DAA Course in Greater Noida
DAA Coaching in Greater Noida
DAA Classes in Greater Noida
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers.
Keep it up in future, thanks for sharing such a useful post.
you can learn an operating system course.
It is one of the famous courses that helps you to get a good job in the IT sector. The OS training program helps to develop the drivers
of the device in the pc platforms and embedded platforms. If you want to study the Operating System Coaching in Greater Noida then
you can select the top coaching center. The reputed institute provides the best training to the students.
Operating System Classes in Greater Noida
Operating System Course in Greater Noida
Operating System Coaching in Greater Noida
Thanks for sharing valuable Information, I really very impressive on your blog. I hope you continue on blogging job. Python course in Noida is where you can learn how to set up campaigns, generate and analyze personalized reports.
Python Training In Noida
Python Coaching In Noida
Python Classes In Noida
Best Python Training Institute In Noida
I am thankful to you that you Are sharing such valuable inforation, having read your Blog I am so impressed I hope you will be continue on blogging job. here data science training in greter noida is essential for professionals and students looking for a career as a data scientist.
Data Science Training In Greater Noida
Data Science Training In Greater Noida
Data Science Training In Greater Noida
Data Science Training In Greater Noida
I am exceptionally happy to see this post. It is fascinating and enlightening. Such a pleasant post, I am grateful and I like this post. Likewise I might want to share one thing which is an establishment for learning Digital Marketing, which is the most requesting now daily. For that, you can join at this connection
Digital Marketing Training in Noida
Digital Marketing coaching in Noida
Digital Marketing institute in Noida
Digital Marketing classes in Noida
Much obliged for sharing significant Information, I actually quite great on your blog. I trust you proceed on blogging work.
English Spoken Training in Noida
English Spoken coaching in Noida
English Spoken institute in Noida
English Spoken classes in Noida
I would say to you thanks that you are shareing such a valuable information with
us, I Am very glad to read your blog I am so impressed I hope you will be continue
on blogging job. here you can learn in SEO new techniques or tricks, to acquire new
approaches or just another point of view, is to do a SEO Positioning course.
SEO
Training In Greater Noida
SEO
Training Institute In Greater Noida
SEO
Classes In Greater Noida
SEO
Course In Greater Noida
Haveing seen your blog i am very happy thanks for shareing such valuable
information keep continue this blogging job, here you can learn C language C is the
precursor and inspirer for almost all the most popular high-level languages
available today.
C Language Training In Greater Noida
C Language Training Institute In Greater Noida
C Language Course In Greater Noida
C Language Tranning In Greater Noida
Thangs for shareing this Blog I am very happy to see this such a valuable
information, you are doing good job keep continue on Blogging job here you can do
C++ Training in Greater Noida at Mirorsoft Technologies It can be used for low-
level programming, such as writing scripts for drivers and kernels, and also
supports high-level programming language functions, such as writing scripts for
software applications, etc.
C++ Language Training In Greater Noida
C++ Language Training Institute In Greater Noida
C++ Language Course In Greater Noida
C++ Language Classes In Greater Noida
Snapdeal here came up with an Offer where you can win special Snapdeal prize by just playing a game & win prizes Call @6289576795
Snapdeal prize
Prize Snapdeal
Snapdeal winner List
Lucky Draw Snapdeal
Snapdeal winner List 2019
snapdeal lucky customer
Thanks for sharing valuable Information, I really very impressive on your blog. I hope you continue on blogging job. TalktoAstro is a leading astrology prediction platform. Here you can talk to India’s best astrologers, tarot reader, Vastu experts or numerologists over call or order report with just Rs 100. Our mission is to provide exceptional services at a minimum cost. Get predictions related to love, marriage, career or finance from the comfort of your home with full privacy from Talktoastro experts.
astrologer online
free talk to astrologer
astrologist online
best online astrology consultation
online astrologist
talk to astrologer free
Nice Post thanks for the information, good information & very helpful for others. For more information about Online Shopping Lucky Winner, Flipkart,
HomeShop18, Shopping Lucky, Draw, Contest, Winner, Prize, Result, 2018 - 2019 Click Here to Read More
Thanks for sharing this informative content Really I appreciate your work | Web design company in Hyderabad
Very Nice article ! great job. Thanks for sharing.
Promote your business brands with bulk SMS marketing, contact us at +917404900081
Bulk SMS Service provider in UAE
Bulk SMS Service provider in U.S.
Bulk SMS Service provider in U.K.
Bulk sms Service provider in India
Bulk sms service provider in Australia
Bulk sms service provider in Indonesia
Bulk sms service provider in Canada
Bulk sms Service provider in Kuwait
https://www.onlineshoppingluckywinner.com/
Comment: Nice Post thanks for the information, good information & very helpful for others. flipkart lucky draw For more information about Online Shopping Lucky Winner, Flipkart, HomeShop18, Shopping Lucky, Draw, Contest, Winner, Prize, Result, 2018 - 2019 flipkart lucky draw, Homeshop18 lucky draw, Snapdeal lucky draw Winner, Shopcluse lucky draw
flipkart lucky draw, Homeshop18 lucky draw, Snapdeal lucky draw Winner, Shopcluse lucky draw
Atal Pension Yojana, APY, Digitize India Platform, DIGITAL INDIA PLATFORM, Apna CSC Online Registration, CSC Apply
Mobile Number Tracker, career counselling, career counselling online, online career counselling free, online counseling,
Good article! I found some useful educational information in your blog, it was awesome to read, thanks for sharing this great content to my vision
best java training institute in Greater Noida.
Java courses in Greater Noida.
java institute in Greater Noida.
java training institute in Greater Noida.
Very nice post and I got very useful information
website designing company in chennai
digital marketing company in chennai
Nice article! I got some very useful Educational information in your blog
thank you
ac service in chennai
ac service chennai
ac service
نوفير اليكم الان من خلال موقعنا افضل الصيانات المتيمزه صيانة كلفينيتور الخاصه بالاجهزه الكهربائيه و بافضل تميز صيانة امبريال الان من موقعنا و بتوفير افضل الاساليب و الوسائل المتيمزه من موقعنا في الصينات و بافضل تميز الان تواصلو معنا الان و احصل عيل افضل الصيانات
Thanks for sharing valuable Information. It's really very impressive. Your Post is very unique and all information is reliable for new readers. I hope you continue on blogging job for your readers. Python is a simple and easy to learn programming language. Python is considered great for deployment automation and web development, but many non-developers are first introduced to the Python language and its ecosystem when doing data work. We offers you the best training in greater noida and also provide certificates after the successful completion of course.
Python classes in Greater Noida
Python coaching Greater Noida
Python training in Greater Noida
Python course in Greater Noida
الان يقدم موقع العربية للعود افخم انواع العطور من خلال كود خصم العربية عود للعود تمتع باكبر نسبة تخفيض
You have a real ability for writing unique content. I like how you think and the way you represent your views in this article.
Thank you for sharing this information.
Top Digital Marketing Agency in india, we provide customize DM service that give you sales and brand. Our company is expertise in SEO, PPC, SMO, ORM.To Know more visit here https://www.wecareatbeno.com
We provide a complete list of high domain authority Sites For Classifieds, Article, Blog, Business Listings, Social Bookmarking, Press Release, Video, PPT , Image sharing.
Classifieds Submission Sites in India
Classifieds Submission Sites in USA
Classifieds Submission Sites in UK
free classified websites without registration
business listing sites in india
instant approval directory submission sites list
image submission site
social bookmarking sites list
ppt submission site list
profile creation sites
Thank you for sharing your ideas. This blog post is very infortic and helpful for me . I have this content thank you
java traning in greater noida
java coaching in greater noida
java classes in greater noida
java traning institute in greater noida
Thanks for sharing your ideas. keep more updates
web design
digital marketing services
Thank you for sharing your idea
Nice blog, Thank you for sharing this blog.
Top Rated, Leading Finance Assessment Company in Eugeneinment in Eugene, Lane County, Oregon
CSK Dynamic Ventures LLC in Eugene, Oregon
Contact CSK Dynamic Ventures LLC in Eugene, Oregon
Business ventures in oregon
Finance Venture Company in oregon
Infotech Zone - Best Web Design, Best Web Development, Best Digital Marketing Company in Ludhiana, Punjab
Top Rated Best Graphic Designing, Best Web Design, Best Web Development and Best Digital Marketing Company in Ludhiana, Punjab
Top Rated SEO, SMO, Web Design and Digital Marketing Company in Ludhiana, PunjabInfotech Zone - Best Web Design, Best Web Development, Best Digital Marketing Company in Ludhiana, Punjab
Your Post is very nice and useful. Thanks for sharing Keep updating us.
we are the best thermal paper company in Bangalore
Thanks for posting this information | https://www.digitaleyecon.com
You have a real ability for writing unique content. I like how you think and the way you represent your views in this article.
I read fully this blog. It is very clean and beautiful written.
THanks & Regards
FillipTechnologies
Great info.
seo companies in bangalore
seo experts in bangalore
Really Great Post & Thanks for sharing.
Oflox Is The Best Website Designer Dehradun or Website Developer Dehradun
https://www.financialnews.today
we are growing instagram marketing agency in india and offer
Buy Cheap Real Instagram Followers India
Buy Instagram Followers India Paytm
Contact Us on WhatsApp +917821025722
Nice information.
best digital marketing institutes in Bangalore
best orthopedic hospital in Bangalore
best 2d animation company in Bangalore
best 3d animation companies in Bangalore
dofollow instant approval blog commenting sites list
Best meta tag generator tool for blogger
the amp - best seo friendly amp blogger template
Le Solitairian is a conglomerate of highly—committed professionals operating in the fields of real infrastructure, construction and manufacturing.
Infra Solitarian Group
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Touch Screen Application Software Development in India
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Ad Agencies in Hyderabad
thanks for sharing your article.As the most reputed website designers in Chennai, our work is always elegant & has a visual story to it. Our team comprises the best website designers in India.
Best Digital Marketing Agency in Chennai
Digital marketing companies in chennai
Best Content Marketing companies in Chennai
Best SEO Services in Chennai
management h pylori
management h&s regs
capital h management
b&h management
h partners management
Thanks for sharing the comprehensive post, your post having informative&valuable content, Such a helpful information. We are offer provided to real and active followers.
Buy instagram followers Mumbai enjoy your day :) More details to contact us. +917339876756
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Web Development Company in Hyderabad
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Branding Agency in hyderabad
Thanks for sharing good blog post. India best award winning site to Buy Real Instagram Followers Paytm and Paypal from us,
increase social media visibility and real targeted audience...Buy instagram followers India
"Thanks for sharing this information.
Biharapps is the best website design agency and mobile app development company in Patna, Bihar. Top andoid app developers and iOS app developers, web designers in Patna and Software development company in Patna, Bihar. We are website designer in patna "
good one keep it up
Lưới chống muỗi là thiết bị chống muỗi hiện nay được khá nhiều người lựa chọn hiện nay trong việc ngăn ngừa côn trùng xâm nhập. Có khá nhiều người băn khoăn, lưới chống muỗi có ngăn được bụi không khi chưa sử dụng thiết bị này. Nếu đây cũng là thông tin bạn đang quan tâm. Hãy tham khảo bài viết dưới đây cùng cửa lưới Hoàng Minh nhé:
Lưới chống muỗi có ngăn được bụi không
https://www.ohay.tv/view/mua-may-tinh-ban-nhung-dieu-can-luu-y/jOYDuTnvQL
https://maytinhdeban.hatenablog.com/entry/2020/09/01/171155?_ga=2.92378328.471105878.1598947922-517807338.1598947922
https://medium.com/p/e759807b81c4/edit
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Web Designing Company in Hyderabad
Ngay này nhu cầu giải trí bằng công nghệ thông tin ngày càng trở nên phổ biến. Người cao tuổi cũng không phải là ngoại lệ. Tuy nhiên với người cao tuổi thì sự nhanh nhạy về công nghệ sẽ không thể như lớp trẻ. Chúng ta cần phải lựa chọn chiếc máy tính để bàn phù hợp. Vậy với người cao tuổi thì nên chọn những chiếc máy tính để bàn như thế nào? Trong thông tin bài viết này chúng tôi sẽ chia sẻ tới bạn cách chọn máy tính để bàn cho người lớn tuổi. Không chần chừ nữa, chúng ta cùng tham khảo một vài thông tin dưới đây nhé:
Cách chọn máy tính để bàn cho người lớn tuổi
Những chia sẻ của bạn hết sức tuyệt vời
cửa lưới dạng xếp
cửa lưới chống muỗi
lưới chống chuột
cửa lưới chống muỗi hà nội
Nice information.
Mysmartodisha
Hindi Me jankari
Odia Dictionary
Odisha Govt Jobs
http://www.catloc.vn/threads/115762-loi-thuong-gap-o-may-tinh-de-ban-va-meo-khac-phuc.html#post149083
http://penetron.vn/threads/158015-nhung-loi-co-ban-o-may-tinh-de-ban-va-meo-khac-phuc.html#post159414
http://pcwebgames.net/threads/127771-Mot-so-loi-pho-bien-o-may-tinh-de-ban-va-cach-khac-phuc.html#post506187
http://phimbomtan.edu.vn/threads/96314-Ban-co-biet-may-tinh-de-ban-thuong-gap-nhung-loi-gi-va-khac-phuc-ra-sao.html#post119001
http://tours.bpsc.vn/threads/117261-may-tinh-de-ban-thuong-gap-nhung-loi-gi.html
http://pcwebgames.net/threads/127771-Mot-so-loi-pho-bien-o-may-tinh-de-ban-va-cach-khac-phuc.html#post506187
http://vangnutrang.com.vn/threads/155747-loi-thuong-gap-tren-may-tinh-de-ban-va-cach-khac-phuc.html#post155947
http://www.vtld.com.vn/threads/243577-Loi-thuong-gap-o-may-tinh-de-ban-va-cach-khac-phuc.html#post244750
I would Like to Really Appreciated All your wonderful works for making this Blogs...Looking Towards More on this... Fashion bloggers in India
Thanks for sharing this information.
Biharapps is the best digital marketing agency and mobile app development company in Melbourne, Sydney, Perth, Brisbane, Adelaide, Australia. Top website development company in Australia and SEO company in Australia.
School erp
school software
school management
online class
virtual classroom
virtual software
virtual learning
Mobile Apps have now become a basic necessity for every business today, be it a small or big. mTouch Labs helps you to create your idea into reality by our professional mobile app developers. mTouch labs is one of the leading mobile app development services in hyderabad. We are providing mobile application development services in Hyderabad throughout India. mTouch Labs is a leading web and android mobile app development company in hyderabad that offers an open-source platform and cost-effective.
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull.| Advertising Agency in Hyderabad
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Animal healthcare products Manufacturers in India
Thanks for sharing the comprehensive post, your post having informative&valuable content,it will be helpfull. |
Animal pharmaceutical companies in Vijayawada
"Thanks for sharing this information.Apptians is thebest app development company in delhi and App development in Faridabad,India.
Best iOS App Development Company in Delhi and iOS app development company in Faridabad, Indiabest ios app development company in Gurgaon Haryana and ios app development company in NoidaUttar Pradesh, India."
About Lautrop & Uhre which is best Jewellery Designer for unique, handmade and personalized jewelry
Thank you so much for sharing impressive contain. Saadrch Digital Software is the best SEO services in Patna. We offer 360-degree Digital Marketing services like SEO, PPC, SMO, ORM & Design Development.
Superb explanation & it's too clear to understand the concept as well, keep sharing admin with some updated information
with right examples. Keep update more posts. Nice Article! Thanks for sharing such amazing information.
SEO Company
Digital Marketing Service
Digital Marketing company in Delhi
Xanax belongs to the benzodiazepines drug, which is using to address anxiety, panic disorder, and stress by stimulating the disturbed and unbalanced chemicals in the brain. Xanax offers calming effects in the brain to enhance the productivity evaluator's consultation and guidelines. Buy Xanax online
buy xanax online
Oxycontin may be a brand of Oxycodone, this is often the controlled-release Oxycodone tablets, intended to be taken every 12 hours. Oxycodone may be a semi-synthetic opioid synthesized from thebaine, an opioid alkaloid found in the Persian poppy, and one among the various alkaloids found within the Papaver somniferous. buy oxycontin online
buy oxycodone online
Oxycontin may be a brand of Oxycodone, this is often the controlled-release Oxycodone tablets, intended to be taken every 12 hours. Oxycodone may be a semi-synthetic opioid synthesized from thebaine, an opioid alkaloid found in the Persian poppy, and one among the various alkaloids found within the Papaver somniferous. buy oxycontin online
buy oxycontin online
Norco may be a powerful prescription pain drug that comprises an opioid (narcotic) that’s utilized to regulate pain severe sufficient to wish an opioid analgesic, while other pain therapies like non-opioid ache medicines don’t manage your illness well adequately, otherwise you cannot bear them. Buy Norco online
buy norco online
Thanks for sharing.
buy logo online
This is one of the best blog. I really enjoy your blog also i bookmarked your blog because i found some new stuff on your site. It is very useful and informative for me. Thank you for sharing the valuable article. Great work. Keep it up!! Personal Investigations
Nice Blog. Thanks for sharing informative article with us.Best Forex Education
I have been a keen follower of your blog.
Recently I came across this topic and after reading the whole post I am amazed that how well you have written it.
Thanks for sharing this valuable information.
Solitairian city Review
Solitairian city Complaints
You have a wonderful site. Thank you for the efforts to publish this. Great work. Keep it up!! St Johns Wood Estate Agent
Top 1 web development company in hyderabad Offering Professional Website Designing for Personal, Business & Ecommerce websites with SEO Optimization. Experienced web designing company with expertise in latest web trends.
Beneficial article for beginners. I am a beginner too, so these all tips help me a lot thanks for sharing. Also great with all of the valuable Infographic Submission Sitesinformation you have. Keep up the excellent work you are doing well.
thank you
thanks you very much updated information.I believe that people and not solely technology is imperative in instilling forward-thinking, sustainable business development.
product submit
Thanks for the article, very well written and informative. Also want to share information regarding Online Astrology Consultation . At astrosalah you will get all astrology solutions at one platform. You will not regret it.
Thanks for sharing this information.
Biharapps is the best website design agency and mobile app development company in Dubai, UAE. Top andoid app developers and iOS app developers , web designers in Dubai, UAE and Software development company in Dubai, UAE. We are Digital Marketing Agency and SEO Company in UAE.
Hello!
Beneficial article for beginners. SEO on Instagram I am a beginner too, so these all tips help me a lot thanks for sharing. It’s helpful for this blog
Thanks for the article, very well written and informative. Also want to share information regarding Rashi Ratna Consultant Shweta Singh Ji . At Astrosalah She provide you consultation regarding which gemstone suits you and procedure to wear gemstones.
Thank you for sharing this information, I have Bookmarked this and waiting for more to read,
Global Trade Plaza is the Best B2B Marketplace in India, We are the Top Leading B2B Marketplace Portal having Top Leads of verified Buyers, Suppliers, and Manufacturers,
Great post. I was once checking constantly this weblog and I'm impressed! Extremely useful information specially the closing part. I maintain such information much. I was once seeking this specific information for a very long time. Many thanks and best of luck.
Product Submission Sites
Brisk logic is the best web development company in mohali .
Beneficial article for beginners. ranking factors
I am a beginner too, so these all tips help me a lot thanks for sharing. Also great with all of the valuable information you have. Keep up the excellent work you are doing well.
ning
We offer the Best SEO Training in Hyderabad with advanced topics that can help you get a job easily on SEO in Digital marketing which has plenty of job openings.
SEO Live Projects
We at Digital Brolly offer SEO Live Projects as it’s important that you practice all that you learn in SEO. Our SEO training is practice-oriented and provides SEO Live Projects.
100% Placement Assistance
Making you ready for the job is our priority. Our Mock interviews and special job oriented sessions will help you crack the job easily. Join our SEO Training in Hyderabad for 100% placement assistance.
Are you searching for private limited company registration in Dhaka, Bangladesh? Legal Adda is a leader in online pvt ltd company registration in Bangladesh.
Company Registration in Bangladesh
Smart Outsourcing Solutions is the best company and providing Static, Dynamic, E-commerce,Online Shopping and News Portal website development, Domain Registration, Cheap Web Hosting, Cloud Hosting, WordPress Hosting, Reseller Hosting,
Virtual Private Server (VPS) and Dedicated Hosting,Internet Marketing/Digital Marketing like SEO,
outsourcing institute
nice blog... thanks to share info about your services. This is really useful.
Solitairian city Review
Solitairian city Complaints
Its very useful for all. Thanks for sharing this information for us
Ac Service Chennai
Awesome post presented by you..your writing style is fabulous and keep update with your blogs.
Hire Dedicated Node JS Developers in India
Hire Node JS Developers in India
Hire Node JS Programmers in India
This is a nice post in an interesting line of content.Thanks for sharing this article, great way of bring this topic to discussion. If you are feeling bore, are you interested to play Online Poker India. Here is the list of Best Online Poker sites in India for playing safe and secure.
Negative Impacts of AI
Negative Impacts of Artificial Intelligence
Nice Information Blog
Jewellery by Mitali Jain
Jewellery By Mitali Jain is the best website to buy artificial jewellery shop in Jaipur. They sell fancy and attractive statement jewellery designers products like Earrings, Rings, Necklaces, Headgears, Bracelets, Mask and Glass Chains, Bookmark Jewellery, Gift Cards and many more items like this. And also checkout our new collections Summer Luna Collection, Holy Mess Collection and Vintage Trésor Collection.
Thank you for sharing it with us.
I am really happy to see this blog.
It is very helpful for me.
Nursing assignment help
Great post!! All the information is very helpful which can help us to increase our knowledge. Another big interesting article, profile creation sites list free
thank you keep sharing. please keep it up!
Hello!Beneficial article for beginners. I am a beginner too, so these tips help me a lot thanks for sharing. guest posting sites
Also great with all of the valuable information you have.thank you
Really great blog. I am Impressed.blog comment backlink
We appreciate that please keep going to write more blogs. Thanks for sharing with us.
Thanks for sharing such a piece of detailed information. I’m a beginner & I wanted to submit my site to the search console. image submission
The information above was very helpful. Thanks
Nice post, truly insightful info about SEO. I have used these techniques to bring more traffic to the site and it worked and I used tools to do backlinking.content marketing agency
please keep it up!
Nice information and good tips for SEO off-page optimization. I have got good tips to improve SEO off-page Optimization. Email advertising
Thanks for sharing! please keep it up!
Great article. Such good information was shared as these sites are really helpful for my website for doing SEO. Email Marketing Strategies
thanks for sharing your post.
You are very thankful for sharing this valuable information. I’m a beginner in SEO and want to grab more information about it,social media campaign
I hope you will share this type of post again. please keep it up! Thanks.
Thanks for sharing it with us,
it is a very unique and helpful article for us.
Buy law essay
Thanks for sharing valuable Information. It's really very impressive. Your Post is very unique and all information is reliable for new readers. I hope you continue on blogging job for your readers.
Solitairian Review
Solitairian Review
this is the one i am searching in google to read, if you wish to bakhoor online uae check our website. we are the best perfumes seller and manufacturer in UAE.
Best wholesale rice exporter is Taksh Global, Buy rice in wholesale from the best rice wholesaler, best quality rice exporter, Best rice dealer, Wholesale rice exporter, Best wholesale rice exporter.
For more info visit: https://thericeexporter.com/
this blog is really very helpful, thank you for sharing such a reliable content. i appreciate your effort.
machine learning training in greater noida
verynice article
MuleSoft Demo video in telugu || what is mulesoft || MuleSoft Training videos in telugu
top mobile app development company
mobile app development company in Delhi
mobile app development company in Patna
mobile app development company in Mumbai
mobile app development company in Pune
I would like to take this opportunity to thank the author for his incredible work. I believe Customer relationship management is essential for every business to create a loyal customer base.
Best CRM in India
Thanks for sharing such a great information with us. Your Post is very unique and all information is reliable for new readers. I am very glad to see this post. It is very interesting and informative.
Solitairian Review
Solitairian Review
I am grateful to the owner of this site which really shares this wonderful work of this site. That is actually great and useful information. I'm satisfied with just sharing this useful information with us. Please keep it up to date like this. Thank you for sharing.
Solitairian city reviews
Solitairian city reviews
Thanks for sharing this information. Looking for more.
Talk to Astrologer Online
Chat with Astrologer Online
Your Content is amazing and I am glad to read them. Thanks for sharing the Blog. this blog is very helpful information for everyone.
Lakshya aquapolis reviews and complaints
Lakshya aquapolis reviews and complaints
Thanks for sharing valuable post
Megger Tester for sale available to be purchased: Megger VF5 1013-098 VF5 Voltstick (container of 12)- $390.00
Highlights:
1.AC non-contact voltage locator
2.12 V to 1000 V voltage range
3.Visual, perceptible and vibration cautioning of low and medium voltages
4.Durable elastic over-formed body
5.Built-in brilliant white LED light
6.Complete with 2xAAA batteries
CONTACT US
OMNI CONTROLS INC.: https://www.omnicontrols.com/
Commerce Park Professional Center 5309 Technology Dr. Tampa, FL 33647
P: 813.971.5001
Email: sales@omnicontrols.com
While arranging an excursion to the United States,health insurance for visitors to usa with pre-existing conditions. Be that as it may, numerous insurance agency don't offer plans covering previous ailments yet rather any health related crises abroad. There are explicit circumstances that many firms can take care of with next to no additional expenses.
Contact Us:
Location: 425 Huehl Road,Suite 22-A,Northbrook,IL 60062
Phone : 1-847-897-5120 | Fax : 1.847.897.5130 | Toll Free : 1-800-344-9540
WhatsApp : 1-847-897-5120 | Email: info@visitorsinsurance.com
Website: http://www.visitorsinsurance.com
http://www.facebook.com/myvisitorsinsurance
https://www.trustpilot.com/review/www.visitorsinsurance.com
http://www.linkedin.com/company/visitorsinsurance
Really enjoyed reading your article.
https://rigwelllifetimeonline.com/
Best All india HNI database Provider
Thanks for sharing the great information.
Wi4 provide services like HL7 such as Mirth Connect . Mirth Connect Support . You may also read related blogs like The Complete HL7 Compliance Checklist , and A Bullet List of Top HL7 Benefits New Comment 23w3rr4
This is truly a great read for me.
https://www.kararaceramics.in
This charming cottage has been updated with modern amenities while still retaining its original character, including a cozy fireplace and hardwood floors.
Real Market Adda Loans
Payday Quik Loans
At Kanchi Kamakoti CHILDS Trust Hospital, our laboratory services in hospital are equipped with advanced technology to ensure precise and prompt diagnostic results. Our experienced team of professionals is dedicated to delivering accurate reports, supporting effective treatment plans, and contributing to overall patient care. Trust our state-of-the-art laboratory services for reliable and timely medical diagnostics, making us a leading choice in pediatric healthcare.
has context menu
Post a Comment