logo
down
shadow

ServiceStack Ormlite: Circular reference between parent and child tables prevents foreign key creation


ServiceStack Ormlite: Circular reference between parent and child tables prevents foreign key creation

Content Index :

ServiceStack Ormlite: Circular reference between parent and child tables prevents foreign key creation
Tag : development , By : Guy Kastenbaum
Date : December 18 2020, 12:00 PM

Hope this helps OrmLite is a code-first ORM where it's POCO's are a 1:1 mapping of the underlying table. You can't define cyclical relationships like this in OrmLite as you can't define cyclical relationships like this in SQL without resorting to a multi-step table creation where foreign key constraints are added after all tables are created. I'd recommend against defining your tables with cyclical foreign keys, you can always add them later after the tables are created.
Using the [References(Type)] attribute creates a foreign key, but this isn't required for OrmLite POCO References which can use implicit naming convention for defining implied relationships, e.g:
public class Parent
{
    [AutoIncrement]
    public int Id { get; set; }

    public string Name { get; set; }

    [Reference]
    public Child ActiveChild { get; set; }

    public int? ActiveChildId { get; set; }

    [Reference]
    public List<Child> AllChildren { get; set; }
}

public class Child
{
    [AutoIncrement]
    public int Id { get; set; }

    public int ParentId { get; set; }

    public string Description { get; set; }
}
db.DropAndCreateTable<Parent>();
db.DropAndCreateTable<Child>();

var parent = new Parent
{
    Name = "Parent",
    ActiveChild = new Child {  Description = "Active" },
    AllChildren = new List<Child>
    {
        new Child { Description = "Child 1" },
        new Child { Description = "Child 2" },
    }
};

db.Save(parent, references:true);

var dbParent = db.LoadSelect<Parent>();
dbParent.PrintDump();

Comments
No Comments Right Now !

Boards Message :
You Must Login Or Sign Up to Add Your Comments .

Share : facebook icon twitter icon

ServiceStack.OrmLite - how to include field from foreign key lookup?


Tag : development , By : phatfish
Date : March 29 2020, 07:55 AM
fixed the issue. Will look into that further To do this you would need to use Raw SQL containing all the fields you want and create a new Model that matches the SQL, so for this example you would do something like:
public class ShipperDetail
{
    public int ShipperId { get; set; }
    public string CompanyName { get; set; }
    public string Phone { get; set; }
    public string ShipperTypeName { get; set; }
}

var rows = dbCmd.Select<ShipperDetail>(
    @"SELECT ShipperId, CompanyName, Phone, ST.Name as ShipperTypeName
        FROM Shippers S INNER JOIN ShipperTypes ST 
                 ON S.ShipperTypeId = ST.ShipperTypeId");

Console.WriteLine(rows.Dump());
[
    {
        ShipperId: 2,
        CompanyName: Planes R Us,
        Phone: 555-PLANES,
        ShipperTypeName: Planes
    },
    {
        ShipperId: 3,
        CompanyName: We do everything!,
        Phone: 555-UNICORNS,
        ShipperTypeName: Planes
    },
    {
        ShipperId: 4,
        CompanyName: Trains R Us,
        Phone: 666-TRAINS,
        ShipperTypeName: Trains
    }
]

How can I set a foreign key to allow nulls using ServiceStack OrmLite?


Tag : development , By : Jenuel
Date : March 29 2020, 07:55 AM
it should still fix some issue To specify a value type is nullable in OrmLite, make it nullable in C#:
public class Blah
{
    [AutoIncrement]
    public long Id { get; set; }
    public string Name { get; set; }

    [References(typeof(Foo))]
    public long? FooId { get; set; }

}

VB.Net clone hierarchy where parent has reference to child and vice versa -> circular reference


Tag : vb.net , By : Blaise Roth
Date : March 29 2020, 07:55 AM
may help you . The simplest solution is to just have the Child class not clone the Parent property at all. When a Child clones itself, it could either leave the Parent property the same, or just leave it null. For instance:
Class Child 
    Implements ICloneable

    Public Property Parent as A

    Public Function Clone() As Object Implements ICloneable.Clone
        Return New Child() With { .Parent = Me.Parent }
    End Function
End Class
Class A 
    Implements ICloneable

    Public Property Children As List(Of Child)

    Public Function Clone() As Object Implements ICloneable.Clone
        Return New A() With 
            {
            .Children = Me.Children.Select(
                Function(c)
                    Dim result As Child = DirectCast(c.Clone(), Child))
                    result.Parent = Me
                    Return result
                End Function).ToList()
            }
    End Function
End Class
Class Child 
    Public Property Parent as A

    Public Function Clone(parent As A) As Object
        Return New Child() With { .Parent = parent }
    End Function
End Class
Class Child 
    Public Property Parent as A

    Public Sub New()
    End Sub

    Public Sub New(childToClone As Child, parent As A)
        ' Copy other properties from given child to clone
        Me.Parent = parent
    End Sub
End Class

servicestack ormlite and foreign keys to same table


Tag : development , By : user181445
Date : March 29 2020, 07:55 AM

Object creation events in ServiceStack's OrmLite


Tag : development , By : avi
Date : March 29 2020, 07:55 AM
Related Posts Related QUESTIONS :
  • How to animate CN1 Slider progress on load
  • Issue with bwa mem process not running on all output files from previous process
  • Delete videos from playlist using YouTube API
  • How to restart the Hyperledger Composer Playground locally
  • How to configure email alerts in Zabbix Server?
  • Simulator is not working for smart home action with all configured session
  • How parse data using join on Objection.js
  • Assign an array to a property in a Chapel Class
  • Netlogo: How can I obtain the accumulate value in Netlogo?
  • How to populate datasource for listview using api response in react native?
  • Why does gmail API when using history.list method send message ids without the field what action has been preformed on t
  • How to run an append query in ms access vba as part of a transaction
  • Wrong dates shown in Jekyll-based blog
  • How to concatenate two document lists in a webMethods flow service?
  • How to properly set up a site map addition in a customization project
  • IBM Content Collector error calling external Web Service
  • Is (0*1*)* equal to (0 | 1)*?
  • How do I configure phpMyAdmin to start with a blank sql query from the SQL tab?
  • "Objects are not valid as a React child" Redux error when conditionally connecting a component?
  • Displacy results are not showing
  • Strapi / Graphql. What am i doing wrong?
  • How to add Search bar for django template?
  • lookup in presto using single column against a range in lookup table
  • How can you stop videos being stolen on website?
  • Can't code substitution happen in Hybrid Flow?
  • Removed widget remains on parent
  • setup saga middleware with redux-starter-kit's configureStore()
  • How to get cookies from response of scrapy splash
  • I need to do a firebase stream and not a Http Get
  • Unable to compile node-runtime
  • SQLSTATE[42S22]: Column not found: 1054 Unknown column '' in 'where clause'
  • How to extract only the number from a variable
  • disable linter in DAML studio
  • RxJS: How to set exhaustMap concurrent?
  • How to remove perforce (p4) on Ubuntu
  • How do they know mean and std, the input value of transforms.Normalize
  • Why this type is not an Interface?
  • SugarCRM Rest API set_relationship between Contacts and Documents
  • Jira dashboard organization
  • Web worker importScripts fails to place script variables in global scope
  • Always errors - The "path" argument must be one of type string, Buffer, or URL. Received type undefined
  • How to create an observable of a stream of infinite items
  • Not efficiently to use multi-Core CPU for training Doc2vec with gensim
  • webGL gl_Position value saving outside shaders
  • Is it okay for a resolver to have side effects besides resolving the type?
  • Move 32bit register into a 8 bit register
  • Is there a way to update, not overwrite, worker_env for a Dask YarnCluster within a script?
  • Lotus Notes Deployment
  • How Do I Add Active Directory To APIM Using Terraform?
  • How to get the old parameter values in Blazor OnParameterSet?
  • How to debug "ERROR: Could not reach the worker node."?
  • How chain indefinite amount of flatMap operators in Reactor?
  • extract dates and times from string in Redshift
  • How do I make a column of 3 cards match in height in bootstrapVue?
  • how to replace missing values from another column in PySpark?
  • only read last line of text file (C++ Builder)
  • Snakemake --forceall --dag results in mysterius Error: <stdin>: syntax error in line 1 near 'File' from Graphvis
  • How Can I Remove Demo Products From APIM Created With Terraform?
  • How to avoid cloning a big integer in rust
  • Break a row of words into word groups in Hive
  • shadow
    Privacy Policy - Terms - Contact Us © scrbit.com