Updatable Primary Key problem


Author
Message
Aaron Young
Aaron Young
Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)Advanced StrataFrame User (569 reputation)
Group: StrataFrame Users
Posts: 277, Visits: 1.1K
I want to set my own value for primary keys but the BO.Save() method doesn't write the primary key back to the database.

For example, I have an Int32 primary key called "CustomerID" and I set the value in SetDefaultValues() and the value is unique. I call BO.Add() which sets the value of CustomerID. I check the value of BO.CustomerID and it is correctly set to a valid value. However, when I do BO.Save() the CustomerID field is not written back to the SQL database (I can see this in SQL Profiler).

I have tried setting PrimaryKeyIsUpdatable to true but I guess I haven't done it correctly as Save() never writes the primary key.

Can anyone help?

Thanks in advance.

Reply
Trent Taylor
Trent Taylor
StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)StrataFrame Developer (14K reputation)
Group: StrataFrame Developers
Posts: 6.6K, Visits: 7K
Is there a table or primary key property in the DDT that sets the BO to PrimaryKeyIsAutoIncremented to true and PrimaryKeyIsUpdatable = false?

Paul answered the question as to why the field property exists in the DDT perfectly.  As for having a property that sets these properties, you really just need to create a base BO and inherit your BOs from the base BO with these properties set, this way you don't have to set them each time.

Imports MicroFour.StrataFrame.Business
Imports System.ComponentModel

Public Class MyBaseBO
    Inherits MicroFour.StrataFrame.Business.BusinessLayer

#Region " Private Fields "

    Private _PrimaryKeyIsAutoIncremented As Boolean = False
    Private _PrimaryKeyIsUpdatable As Boolean = True

#End Region

#Region " Public Properties "

    ''' <summary>
    ''' Gets or sets a value that determines whether the primary key for this business object is
    ''' auto-incremented within the data source (assigned by the database rather than by the
    ''' client).
    ''' </summary>
    <Category(EDITOR_CATEGORY_CRUD), _
    DefaultValue(False)> _
    Public Overrides Property PrimaryKeyIsAutoIncremented() As Boolean
        Get
            Return _PrimaryKeyIsAutoIncremented
        End Get
        Set(ByVal value As Boolean)
            _PrimaryKeyIsAutoIncremented = value
        End Set
    End Property


    ''' <summary>
    ''' Determines if the primary key field is updatable.  This property allows primary key fields that are not auto-incrementing to be used while
    ''' preventing an update error if the field is not updatable (i.e. Guid Primary Keys).
    ''' </summary>
    <Category(EDITOR_CATEGORY_CRUD), _
    DefaultValue(True)> _
    Public Overrides Property PrimaryKeyIsUpdatable() As Boolean
        Get
            Return _PrimaryKeyIsUpdatable
        End Get
        Set(ByVal value As Boolean)
            _PrimaryKeyIsUpdatable = value
        End Set
    End Property

#End Region

End Class

Note: You will need to be on 1.6.6 beta and load the attached business assembly into the GAC in order for this to work.  I had to add the Overridable tab to the PrimaryKeyIsAutoIncremented and PrimarykeyIsUpdatable properties.

Attachments
MicroFourStrataFrameBusiness.zip (126 views, 384.00 KB)
GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Threaded View
Threaded View
Aaron Young - 17 Years Ago
Aaron Young - 17 Years Ago
Aaron Young - 17 Years Ago
Bill Cunnien - 17 Years Ago
Paul Chase - 17 Years Ago
                         [quote][b]Paul Chase (04/24/2008)[/b][hr] I hope that helps am makes...
Edhy Rijo - 17 Years Ago
                             Hi edhy, Guids as primekeys work fine with SF. The issue I had was...
Paul Chase - 17 Years Ago
                                 [quote]Is there a table or primary key property in the DDT that sets...
Trent L. Taylor - 17 Years Ago
                                 [quote][b]Paul Chase (04/24/2008)[/b][hr]Here issome logicI havein my...
Edhy Rijo - 17 Years Ago
                                     One word of caution, if you are not planning on using replication you...
Trent L. Taylor - 17 Years Ago
                                         Thanks Trent, points taken.:hehe:
Edhy Rijo - 17 Years Ago
Charles R Hankey - 17 Years Ago
Trent L. Taylor - 17 Years Ago
Aaron Young - 17 Years Ago
Trent L. Taylor - 17 Years Ago
                         I think you are right Trent. Whatever way we have tried toengineer it,...
Aaron Young - 17 Years Ago
Edhy Rijo - 17 Years Ago
                         Hi Edhy, That is good to know. We have tested with GUIDs to a limited...
Aaron Young - 17 Years Ago
                             Guys, If youwant to use GUID's then you definately will want to...
Paul Chase - 17 Years Ago
                                 [quote][b]Paul Chase (04/25/2008)[/b][hr]I now use Sqlmerge...
Edhy Rijo - 17 Years Ago
                                     Edhy, Here is a step-by-step on setting up Merge Replication. Just...
Trent L. Taylor - 17 Years Ago
                                         Great! Thanks Trent.
Edhy Rijo - 17 Years Ago
                                             Like Trent said there area tonof articles explaining the different...
Paul Chase - 17 Years Ago
                                                 One consequence of using any form of replication is future changes to...
Aaron Young - 17 Years Ago
                                 Today I started to implement GUID PK for a new SF project, and this...
Edhy Rijo - 17 Years Ago
Peter Jones - 17 Years Ago
Aaron Young - 17 Years Ago
Edhy Rijo - 17 Years Ago
Trent L. Taylor - 17 Years Ago
                         Aaron, If you have an application that is going to replicate it would...
Paul Chase - 17 Years Ago
Aaron Young - 17 Years Ago
Trent L. Taylor - 17 Years Ago

Similar Topics

Reading This Topic

Login

Explore
Messages
Mentions
Search